Kaynağa Gözat

:gear: Prevent cycles during keepalive scrubbing

Ettore Di Giacinto 3 yıl önce
ebeveyn
işleme
de9191408a
1 değiştirilmiş dosya ile 7 ekleme ve 4 silme
  1. 7 4
      pkg/services/alive.go

+ 7 - 4
pkg/services/alive.go

@@ -44,11 +44,14 @@ func Alive(announcetime time.Duration) []node.Option {
 						// Keep-alive scrub
 						nodes := AvailableNodes(b)
 						lead := utils.Leader(nodes)
-						if lead == n.Host().ID().String() && !t.Add(2*time.Minute).After(time.Now()) {
-							// We scrub after some time passed
+						if !t.Add(2 * time.Minute).After(time.Now()) {
+							// Update timer so not-leader do not attempt to delete bucket afterwards
+							// prevent cycles
 							t = time.Now()
-							// Automatically scrub
-							b.DeleteBucket(protocol.HealthCheckKey)
+							if lead == n.Host().ID().String() {
+								// Automatically scrub after some time passed
+								b.DeleteBucket(protocol.HealthCheckKey)
+							}
 						}
 					},
 				)