Merge pull request #1813 from xiang90/snap_event_log

etcdserver: log snapshot event
release-2.0
Xiang Li 2014-11-30 12:11:23 -08:00
commit 7c47decd19
1 changed files with 9 additions and 4 deletions

View File

@ -392,10 +392,11 @@ func (s *EtcdServer) run() {
// apply snapshot to storage if it is more updated than current snapi
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)
log.Fatalf("etcdserver: save snapshot error: %v", err)
}
s.raftStorage.ApplySnapshot(rd.Snapshot)
snapi = rd.Snapshot.Metadata.Index
log.Printf("etcdserver: saved incoming snapshot at index %d", snapi)
}
if err := s.storage.Save(rd.HardState, rd.Entries); err != nil {
@ -413,6 +414,7 @@ func (s *EtcdServer) run() {
}
s.Cluster.Recover()
appliedi = rd.Snapshot.Metadata.Index
log.Printf("etcdserver: recovered from incoming snapshot at index %d", snapi)
}
}
// TODO(bmizerany): do this in the background, but take
@ -439,6 +441,7 @@ func (s *EtcdServer) run() {
s.node.Advance()
if appliedi-snapi > s.snapCount {
log.Printf("etcdserver: start to snapshot (applied: %d, lastsnap: %d)", appliedi, snapi)
s.snapshot(appliedi, nodes)
snapi = appliedi
}
@ -807,7 +810,7 @@ func (s *EtcdServer) snapshot(snapi uint64, snapnodes []uint64) {
// TODO: current store will never fail to do a snapshot
// what should we do if the store might fail?
if err != nil {
log.Panicf("store save should never fail: %v", err)
log.Panicf("etcdserver: store save should never fail: %v", err)
}
err = s.raftStorage.Compact(snapi, &raftpb.ConfState{Nodes: snapnodes}, d)
if err != nil {
@ -818,17 +821,19 @@ func (s *EtcdServer) snapshot(snapi uint64, snapnodes []uint64) {
}
log.Panicf("etcdserver: unexpected compaction error %v", err)
}
log.Printf("etcdserver: compacted log at index %d", snapi)
if err := s.storage.Cut(); err != nil {
log.Panicf("rotate wal file should never fail: %v", err)
log.Panicf("etcdserver: rotate wal file should never fail: %v", err)
}
snap, err := s.raftStorage.Snapshot()
if err != nil {
log.Panicf("etcdserver: snapshot error: %v", err)
}
if err := s.storage.SaveSnap(snap); err != nil {
log.Fatalf("etcdserver: create snapshot error: %v", err)
log.Fatalf("etcdserver: save snapshot error: %v", err)
}
log.Printf("etcdserver: saved snapshot at index %d", snap.Metadata.Index)
}
// checkClientURLsEmptyFromPeers does its best to get the cluster from peers,