Ver código fonte

Merge pull request #1492 from LK4D4/fix_nodes_race

networkdb: fix race in access to nodes len
Jana Radhakrishnan 8 anos atrás
pai
commit
ffd13e32a8
1 arquivos alterados com 8 adições e 2 exclusões
  1. 8 2
      libnetwork/networkdb/cluster.go

+ 8 - 2
libnetwork/networkdb/cluster.go

@@ -112,14 +112,20 @@ func (nDB *NetworkDB) clusterInit() error {
 
 
 	nDB.networkBroadcasts = &memberlist.TransmitLimitedQueue{
 	nDB.networkBroadcasts = &memberlist.TransmitLimitedQueue{
 		NumNodes: func() int {
 		NumNodes: func() int {
-			return len(nDB.nodes)
+			nDB.RLock()
+			num := len(nDB.nodes)
+			nDB.RUnlock()
+			return num
 		},
 		},
 		RetransmitMult: config.RetransmitMult,
 		RetransmitMult: config.RetransmitMult,
 	}
 	}
 
 
 	nDB.nodeBroadcasts = &memberlist.TransmitLimitedQueue{
 	nDB.nodeBroadcasts = &memberlist.TransmitLimitedQueue{
 		NumNodes: func() int {
 		NumNodes: func() int {
-			return len(nDB.nodes)
+			nDB.RLock()
+			num := len(nDB.nodes)
+			nDB.RUnlock()
+			return num
 		},
 		},
 		RetransmitMult: config.RetransmitMult,
 		RetransmitMult: config.RetransmitMult,
 	}
 	}