Jelajahi Sumber

raft: add Entry.isConfig

Xiang Li 11 tahun lalu
induk
melakukan
f387e3e27d
2 mengubah file dengan 6 tambahan dan 2 penghapusan
  1. 4 0
      raft/log.go
  2. 2 2
      raft/raft.go

+ 4 - 0
raft/log.go

@@ -13,6 +13,10 @@ type Entry struct {
 	Data []byte
 	Data []byte
 }
 }
 
 
+func (e *Entry) isConfig() bool {
+	return e.Type == AddNode || e.Type == RemoveNode
+}
+
 type log struct {
 type log struct {
 	ents      []Entry
 	ents      []Entry
 	committed int
 	committed int

+ 2 - 2
raft/raft.go

@@ -227,7 +227,7 @@ func (sm *stateMachine) becomeLeader() {
 	sm.state = stateLeader
 	sm.state = stateLeader
 
 
 	for _, e := range sm.log.ents[sm.log.committed:] {
 	for _, e := range sm.log.ents[sm.log.committed:] {
-		if e.Type == AddNode || e.Type == RemoveNode {
+		if e.isConfig() {
 			sm.pendingConf = true
 			sm.pendingConf = true
 		}
 		}
 	}
 	}
@@ -270,7 +270,7 @@ func (sm *stateMachine) Step(m Message) (ok bool) {
 		switch sm.lead {
 		switch sm.lead {
 		case sm.id:
 		case sm.id:
 			e := m.Entries[0]
 			e := m.Entries[0]
-			if e.Type == AddNode || e.Type == RemoveNode {
+			if e.isConfig() {
 				if sm.pendingConf {
 				if sm.pendingConf {
 					return false
 					return false
 				}
 				}