From bbe187b230465b66efc3214bd39bcfb2c4540157 Mon Sep 17 00:00:00 2001
From: capossele <angelocapossele@gmail.com>
Date: Wed, 10 Jun 2020 21:16:50 +0100
Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A5=20Delete=20finalized=20conflicts?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../analysis/dashboard/fpc_conflictRecord.go  | 11 +++++++++++
 plugins/analysis/dashboard/fpc_livefeed.go    | 19 +++++++++++++++----
 plugins/banner/plugin.go                      |  2 +-
 3 files changed, 27 insertions(+), 5 deletions(-)

diff --git a/plugins/analysis/dashboard/fpc_conflictRecord.go b/plugins/analysis/dashboard/fpc_conflictRecord.go
index be7c3487..9b8dc3c2 100644
--- a/plugins/analysis/dashboard/fpc_conflictRecord.go
+++ b/plugins/analysis/dashboard/fpc_conflictRecord.go
@@ -13,6 +13,17 @@ func newConflictRecord() *conflictRecord {
 	}
 }
 
+func (cr *conflictRecord) cleanUp() {
+	cr.lock.Lock()
+	defer cr.lock.Unlock()
+
+	for id, conflict := range cr.conflictSet {
+		if conflict.isFinalized() {
+			delete(cr.conflictSet, id)
+		}
+	}
+}
+
 func (cr *conflictRecord) ToFPCUpdate() *FPCUpdate {
 	cr.lock.RLock()
 	defer cr.lock.RUnlock()
diff --git a/plugins/analysis/dashboard/fpc_livefeed.go b/plugins/analysis/dashboard/fpc_livefeed.go
index 187004bb..ec782cd5 100644
--- a/plugins/analysis/dashboard/fpc_livefeed.go
+++ b/plugins/analysis/dashboard/fpc_livefeed.go
@@ -55,10 +55,21 @@ func runFPCLiveFeed() {
 		fpcLiveFeedWorkerPool.Start()
 		defer fpcLiveFeedWorkerPool.Stop()
 
-		<-shutdownSignal
-		log.Info("Stopping Analysis[FPCUpdater] ...")
-		analysis.Events.FPCHeartbeat.Detach(onFPCHeartbeatReceived)
-		log.Info("Stopping Analysis[FPCUpdater] ... done")
+		cleanUpTicker := time.NewTicker(1 * time.Minute)
+
+		for {
+			select {
+			case <-shutdownSignal:
+				log.Info("Stopping Analysis[FPCUpdater] ...")
+				analysis.Events.FPCHeartbeat.Detach(onFPCHeartbeatReceived)
+				cleanUpTicker.Stop()
+				log.Info("Stopping Analysis[FPCUpdater] ... done")
+			case <-cleanUpTicker.C:
+				log.Info("Cleaning up Finalized Conflicts ...")
+				recordedConflicts.cleanUp()
+				log.Info("Cleaning up Finalized Conflicts ... done")
+			}
+		}
 	}, shutdown.PriorityDashboard); err != nil {
 		log.Panicf("Failed to start as daemon: %s", err)
 	}
diff --git a/plugins/banner/plugin.go b/plugins/banner/plugin.go
index 08963564..1f0936a6 100644
--- a/plugins/banner/plugin.go
+++ b/plugins/banner/plugin.go
@@ -14,7 +14,7 @@ var Plugin = node.NewPlugin(PluginName, node.Enabled, configure, run)
 
 const (
 	// AppVersion version number
-	AppVersion = "v0.666.0"
+	AppVersion = "v0.2.0"
 
 	// AppName app code name
 	AppName = "GoShimmer"
-- 
GitLab