p2p/simulations: address data race pr comments

This commit is contained in:
Elad Nachmias 2019-01-18 20:53:51 +07:00
parent f1a242793b
commit 8ec258ab1d

View file

@ -171,13 +171,16 @@ func (net *Network) startWithSnapshots(id enode.ID, snapshots map[string][]byte)
node := net.getNode(id) node := net.getNode(id)
if node == nil { if node == nil {
net.lock.Unlock()
return fmt.Errorf("node %v does not exist", id) return fmt.Errorf("node %v does not exist", id)
} }
if node.Up { if node.Up {
net.lock.Unlock()
return fmt.Errorf("node %v already up", id) return fmt.Errorf("node %v already up", id)
} }
log.Trace("Starting node", "id", id, "adapter", net.nodeAdapter.Name()) log.Trace("Starting node", "id", id, "adapter", net.nodeAdapter.Name())
if err := node.Start(snapshots); err != nil { if err := node.Start(snapshots); err != nil {
net.lock.Unlock()
log.Warn("Node startup failed", "id", id, "err", err) log.Warn("Node startup failed", "id", id, "err", err)
return err return err
} }
@ -210,13 +213,14 @@ func (net *Network) watchPeerEvents(id enode.ID, events chan *p2p.PeerEvent, sub
// assume the node is now down // assume the node is now down
net.lock.Lock() net.lock.Lock()
defer net.lock.Unlock()
node := net.getNode(id) node := net.getNode(id)
if node == nil { if node == nil {
return return
} }
node.Up = false node.Up = false
ev := NewEvent(node) ev := NewEvent(node)
net.lock.Unlock()
net.events.Send(ev) net.events.Send(ev)
}() }()
for { for {
@ -256,9 +260,11 @@ func (net *Network) Stop(id enode.ID) error {
net.lock.Lock() net.lock.Lock()
node := net.getNode(id) node := net.getNode(id)
if node == nil { if node == nil {
net.lock.Unlock()
return fmt.Errorf("node %v does not exist", id) return fmt.Errorf("node %v does not exist", id)
} }
if !node.Up { if !node.Up {
net.lock.Unlock()
return fmt.Errorf("node %v already down", id) return fmt.Errorf("node %v already down", id)
} }
node.Up = false node.Up = false