Browse Source

etcdserver: save snapshot before entries

Yicheng Qin 11 years ago
parent
commit
a13d5a70ff
1 changed files with 5 additions and 4 deletions
  1. 5 4
      etcdserver/server.go

+ 5 - 4
etcdserver/server.go

@@ -389,16 +389,17 @@ func (s *EtcdServer) run() {
 				}
 			}
 
-			s.raftStorage.Append(rd.Entries)
-			if err := s.storage.Save(rd.HardState, rd.Entries); err != nil {
-				log.Fatalf("etcdserver: save state and entries error: %v", err)
-			}
 			if !raft.IsEmptySnap(rd.Snapshot) && rd.Snapshot.Metadata.Index > snapi {
 				if err := s.storage.SaveSnap(rd.Snapshot); err != nil {
 					log.Fatalf("etcdserver: create snapshot error: %v", err)
 				}
+				s.raftStorage.ApplySnapshot(rd.Snapshot)
 				snapi = rd.Snapshot.Metadata.Index
 			}
+			if err := s.storage.Save(rd.HardState, rd.Entries); err != nil {
+				log.Fatalf("etcdserver: save state and entries error: %v", err)
+			}
+			s.raftStorage.Append(rd.Entries)
 			s.sendhub.Send(rd.Messages)
 
 			if !raft.IsEmptySnap(rd.Snapshot) {