Browse Source

raftest: wait for network sending

Xiang Li 11 years ago
parent
commit
279b216f9a
2 changed files with 9 additions and 6 deletions
  1. 5 1
      raft/rafttest/network.go
  2. 4 5
      raft/rafttest/node.go

+ 5 - 1
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 {

+ 4 - 5
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)