From 279b216f9a2ba758dae6522db0d22a2a8f628c15 Mon Sep 17 00:00:00 2001 From: Xiang Li Date: Fri, 6 Feb 2015 10:03:52 -0800 Subject: [PATCH] raftest: wait for network sending --- raft/rafttest/network.go | 6 +++++- raft/rafttest/node.go | 9 ++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/raft/rafttest/network.go b/raft/rafttest/network.go index 395334957..03bf6ea4f 100644 --- a/raft/rafttest/network.go +++ b/raft/rafttest/network.go @@ -86,7 +86,11 @@ func (rn *raftNetwork) send(m raftpb.Message) { time.Sleep(time.Duration(rd)) } - to <- m + select { + case to <- m: + default: + // drop messages when the receiver queue is full. + } } func (rn *raftNetwork) recvFrom(from uint64) chan raftpb.Message { diff --git a/raft/rafttest/node.go b/raft/rafttest/node.go index c3778f2b1..64d5d57c9 100644 --- a/raft/rafttest/node.go +++ b/raft/rafttest/node.go @@ -49,11 +49,10 @@ func (n *node) start() { n.storage.SetHardState(n.state) } n.storage.Append(rd.Entries) - go func() { - for _, m := range rd.Messages { - n.iface.send(m) - } - }() + // TODO: make send async, more like real world... + for _, m := range rd.Messages { + n.iface.send(m) + } n.Advance() case m := <-n.iface.recv(): n.Step(context.TODO(), m)