Browse Source

rafthttp: not send 0-entry MsgApp using stream

It is not sent out because it is useless to let remote raft step the
message.
Moreover, MsgApp stream reader can always assume that the length
of entries sent is > 0.
Yicheng Qin 11 years ago
parent
commit
96fde55a0f
1 changed files with 6 additions and 6 deletions
  1. 6 6
      rafthttp/streamer.go

+ 6 - 6
rafthttp/streamer.go

@@ -194,6 +194,12 @@ func (s *streamWriter) handle(w WriteFlusher) {
 	ew := newEntryWriter(w, s.to)
 	defer ew.stop()
 	for ents := range s.q {
+		// Considering Commit in MsgApp is not recovered when received,
+		// zero-entry appendEntry messages have no use to raft state machine.
+		// Drop it here because it is useless.
+		if len(ents) == 0 {
+			continue
+		}
 		start := time.Now()
 		if err := ew.writeEntries(ents); err != nil {
 			log.Printf("rafthttp: encountered error writing to server log stream: %v", err)
@@ -289,12 +295,6 @@ func (s *streamReader) handle(r io.Reader) {
 			}
 			return
 		}
-		// Considering Commit in MsgApp is not recovered, zero-entry appendEntry
-		// messages have no use to raft state machine. Drop it here because
-		// we don't have easy way to recover its Index easily.
-		if len(ents) == 0 {
-			continue
-		}
 		// The commit index field in appendEntry message is not recovered.
 		// The follower updates its commit index through heartbeat.
 		msg := raftpb.Message{