diff --git a/weed/topology/topology_event_handling.go b/weed/topology/topology_event_handling.go
index 96051d25f..d0d175a39 100644
--- a/weed/topology/topology_event_handling.go
+++ b/weed/topology/topology_event_handling.go
@@ -1,6 +1,7 @@
 package topology
 
 import (
+	"github.com/seaweedfs/seaweedfs/weed/stats"
 	"github.com/seaweedfs/seaweedfs/weed/storage/erasure_coding"
 	"github.com/seaweedfs/seaweedfs/weed/storage/types"
 	"google.golang.org/grpc"
@@ -22,11 +23,13 @@ func (t *Topology) StartRefreshWritableVolumes(grpcDialOption grpc.DialOption, g
 		}
 	}()
 	go func(garbageThreshold float64) {
-		c := time.Tick(15 * time.Minute)
-		for _ = range c {
+		for {
 			if t.IsLeader() {
 				t.Vacuum(grpcDialOption, garbageThreshold, 0, "", preallocate)
+			} else {
+				stats.MasterReplicaPlacementMismatch.Reset()
 			}
+			time.Sleep(14*time.Minute + time.Duration(120*rand.Float32())*time.Second)
 		}
 	}(garbageThreshold)
 	go func() {