Browse Source

raft: log only new/no leader

Blake Mizerany 11 years ago
parent
commit
f2d200a826
1 changed files with 10 additions and 7 deletions
  1. 10 7
      raft/node.go

+ 10 - 7
raft/node.go

@@ -3,6 +3,7 @@ package raft
 
 import (
 	"errors"
+	"log"
 
 	"code.google.com/p/go.net/context"
 	pb "github.com/coreos/etcd/raft/raftpb"
@@ -68,15 +69,17 @@ func (n *Node) run(r *raft) {
 	propc := n.propc
 	readyc := n.readyc
 
+	var lead int64
 	var prev Ready
 	for {
-		if r.hasLeader() {
-			propc = n.propc
-		} else {
-			// We cannot accept proposals because we don't know who
-			// to send them to, so we'll apply back-pressure and
-			// block senders.
-			propc = nil
+		if lead != r.lead {
+			log.Printf("raft: leader changed from %#x to %#x", lead, r.lead)
+			lead = r.lead
+			if r.hasLeader() {
+				propc = n.propc
+			} else {
+				propc = nil
+			}
 		}
 
 		rd := Ready{