aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--weed/server/master_server.go12
1 files changed, 10 insertions, 2 deletions
diff --git a/weed/server/master_server.go b/weed/server/master_server.go
index 03a3f74d1..6c0b6652b 100644
--- a/weed/server/master_server.go
+++ b/weed/server/master_server.go
@@ -368,8 +368,16 @@ func (ms *MasterServer) OnPeerUpdate(update *master_pb.ClusterNodeUpdate, startF
}
}
ms.onPeerUpdateLock.RLock()
- if len(ms.onPeerUpdateDoneCns) > 0 {
- for _, onPeerUpdateDoneCn := range ms.onPeerUpdateDoneCns {
+ isGtZero := len(ms.onPeerUpdateDoneCns) > 0
+ ms.onPeerUpdateLock.RUnlock()
+ if isGtZero {
+ var chanPtrs []*chan string
+ ms.onPeerUpdateLock.RLock()
+ for _, cn := range ms.onPeerUpdateDoneCns {
+ chanPtrs = append(chanPtrs, cn)
+ }
+ ms.onPeerUpdateLock.RUnlock()
+ for _, onPeerUpdateDoneCn := range chanPtrs {
*onPeerUpdateDoneCn <- peerName
}
}