Browse Source

raft: Elaborate a little more about committed entries in commitReady.

Ben Darnell 10 years ago
parent
commit
cd1ff78ff3
1 changed files with 9 additions and 6 deletions
  1. 9 6
      raft/multinode.go

+ 9 - 6
raft/multinode.go

@@ -144,12 +144,15 @@ func (g *groupState) commitReady(rd Ready) {
 		g.prevHardSt = rd.HardState
 	}
 	if g.prevHardSt.Commit != 0 {
-		// In most cases, prevHardSt and rd.HardState will be the same because
-		// when there are new entries to apply we just sent a HardState with
-		// an updated Commit value. However, on initial startup the two are different
-		// because we don't send a HardState until something changes, but we do send
-		// any un-applied but committed entries. Therefore we mark all committed
-		// entries as applied whether they were included in rd.HardState or not.
+		// In most cases, prevHardSt and rd.HardState will be the same
+		// because when there are new entries to apply we just sent a
+		// HardState with an updated Commit value. However, on initial
+		// startup the two are different because we don't send a HardState
+		// until something changes, but we do send any un-applied but
+		// committed entries (and previously-committed entries may be
+		// incorporated into the snapshot, even if rd.CommittedEntries is
+		// empty). Therefore we mark all committed entries as applied
+		// whether they were included in rd.HardState or not.
 		g.raft.raftLog.appliedTo(g.prevHardSt.Commit)
 	}
 	if len(rd.Entries) > 0 {