Browse Source

raft: set snapshot to nil when it is saved

Yicheng Qin 11 years ago
parent
commit
e466126510
1 changed files with 5 additions and 0 deletions
  1. 5 0
      raft/node.go

+ 5 - 0
raft/node.go

@@ -210,6 +210,7 @@ func (n *node) run(r *raft) {
 	var advancec chan struct{}
 	var prevLastUnstablei uint64
 	var havePrevLastUnstablei bool
+	var prevSnapi uint64
 	var rd Ready
 
 	lead := None
@@ -293,6 +294,7 @@ func (n *node) run(r *raft) {
 					prevLastUnstablei = rd.Snapshot.Metadata.Index
 					havePrevLastUnstablei = true
 				}
+				prevSnapi = rd.Snapshot.Metadata.Index
 			}
 			r.msgs = nil
 			advancec = n.advancec
@@ -304,6 +306,9 @@ func (n *node) run(r *raft) {
 				r.raftLog.stableTo(prevLastUnstablei)
 				havePrevLastUnstablei = false
 			}
+			if r.snapshot != nil && r.snapshot.Metadata.Index == prevSnapi {
+				r.snapshot = nil
+			}
 			advancec = nil
 		case <-n.stop:
 			close(n.done)