Merge pull request #1406 from mrjana/bugs

Ensure add newly joined node to networknodes
This commit is contained in:
Santhosh Manohar 2016-08-21 22:03:03 -07:00 committed by GitHub
commit 173832dd19
2 changed files with 16 additions and 1 deletions

View File

@ -53,6 +53,7 @@ func (nDB *NetworkDB) handleNetworkEvent(nEvent *NetworkEvent) bool {
n.leaveTime = time.Now() n.leaveTime = time.Now()
} }
nDB.addNetworkNode(nEvent.NetworkID, nEvent.NodeName)
return true return true
} }
@ -66,7 +67,7 @@ func (nDB *NetworkDB) handleNetworkEvent(nEvent *NetworkEvent) bool {
ltime: nEvent.LTime, ltime: nEvent.LTime,
} }
nDB.networkNodes[nEvent.NetworkID] = append(nDB.networkNodes[nEvent.NetworkID], nEvent.NodeName) nDB.addNetworkNode(nEvent.NetworkID, nEvent.NodeName)
return true return true
} }

View File

@ -455,6 +455,20 @@ func (nDB *NetworkDB) LeaveNetwork(nid string) error {
return nil return nil
} }
// addNetworkNode adds the node to the list of nodes which participate
// in the passed network only if it is not already present. Caller
// should hold the NetworkDB lock while calling this
func (nDB *NetworkDB) addNetworkNode(nid string, nodeName string) {
nodes := nDB.networkNodes[nid]
for _, node := range nodes {
if node == nodeName {
return
}
}
nDB.networkNodes[nid] = append(nDB.networkNodes[nid], nodeName)
}
// Deletes the node from the list of nodes which participate in the // Deletes the node from the list of nodes which participate in the
// passed network. Caller should hold the NetworkDB lock while calling // passed network. Caller should hold the NetworkDB lock while calling
// this // this