Browse Source

tools: etcd-dump-logs tool support dump from a given snapshot file

Xiang Li 11 years ago
parent
commit
161b1d2e2e
1 changed files with 15 additions and 4 deletions
  1. 15 4
      tools/etcd-dump-logs/main.go

+ 15 - 4
tools/etcd-dump-logs/main.go

@@ -32,13 +32,24 @@ import (
 
 func main() {
 	from := flag.String("data-dir", "", "")
+	snapfile := flag.String("snap-file", "", "The base name of snapshot file to read")
 	flag.Parse()
 	if *from == "" {
 		log.Fatal("Must provide -data-dir flag")
 	}
 
-	ss := snap.New(snapDir(*from))
-	snapshot, err := ss.Load()
+	var (
+		snapshot *raftpb.Snapshot
+		err      error
+	)
+
+	if *snapfile == "" {
+		ss := snap.New(snapDir(*from))
+		snapshot, err = ss.Load()
+	} else {
+		snapshot, err = snap.Read(path.Join(snapDir(*from), *snapfile))
+	}
+
 	var walsnap walpb.Snapshot
 	switch err {
 	case nil:
@@ -102,9 +113,9 @@ func main() {
 	}
 }
 
-func walDir(dataDir string) string { return path.Join(dataDir, "wal") }
+func walDir(dataDir string) string { return path.Join(dataDir, "member", "wal") }
 
-func snapDir(dataDir string) string { return path.Join(dataDir, "snap") }
+func snapDir(dataDir string) string { return path.Join(dataDir, "member", "snap") }
 
 func parseWALMetadata(b []byte) (id, cid types.ID) {
 	var metadata etcdserverpb.Metadata