diff --git a/snap/genproto.sh b/snap/snappb/genproto.sh similarity index 100% rename from snap/genproto.sh rename to snap/snappb/genproto.sh diff --git a/snap/snap.pb.go b/snap/snappb/snap.pb.go similarity index 98% rename from snap/snap.pb.go rename to snap/snappb/snap.pb.go index c5fc0a42352..befc31a793f 100644 --- a/snap/snap.pb.go +++ b/snap/snappb/snap.pb.go @@ -3,7 +3,7 @@ // DO NOT EDIT! /* - Package snap is a generated protocol buffer package. + Package snappb is a generated protocol buffer package. It is generated from these files: snap.proto @@ -11,7 +11,7 @@ It has these top-level messages: Snapshot */ -package snap +package snappb import proto "github.com/coreos/etcd/third_party/code.google.com/p/gogoprotobuf/proto" import json "encoding/json" diff --git a/snap/snap.proto b/snap/snappb/snap.proto similarity index 95% rename from snap/snap.proto rename to snap/snappb/snap.proto index e4e7ad3a33e..61e5e21b2f7 100644 --- a/snap/snap.proto +++ b/snap/snappb/snap.proto @@ -1,4 +1,4 @@ -package snap; +package snappb; import "code.google.com/p/gogoprotobuf/gogoproto/gogo.proto"; diff --git a/snap/snapshotter.go b/snap/snapshotter.go index 693191be521..d813d3ef45d 100644 --- a/snap/snapshotter.go +++ b/snap/snapshotter.go @@ -1,7 +1,6 @@ package snap import ( - "encoding/json" "errors" "fmt" "hash/crc32" @@ -12,7 +11,8 @@ import ( "sort" "strings" - "github.com/coreos/etcd/raft" + "github.com/coreos/etcd/raft/raftpb" + "github.com/coreos/etcd/snap/snappb" ) const ( @@ -35,15 +35,15 @@ func New(dir string) *Snapshotter { } } -func (s *Snapshotter) Save(snapshot *raft.Snapshot) error { - fname := fmt.Sprintf("%016x-%016x-%016x%s", snapshot.ClusterId, snapshot.Term, snapshot.Index, snapSuffix) - // TODO(xiangli): make raft.Snapshot a protobuf type - b, err := json.Marshal(snapshot) +func (s *Snapshotter) Save(snapshot *raftpb.Snapshot) error { + fname := fmt.Sprintf("%016x-%016x%s", snapshot.Term, snapshot.Index, snapSuffix) + b, err := snapshot.Marshal() if err != nil { panic(err) } + crc := crc32.Update(0, crcTable, b) - snap := Snapshot{Crc: crc, Data: b} + snap := snappb.Snapshot{Crc: crc, Data: b} d, err := snap.Marshal() if err != nil { return err @@ -51,12 +51,12 @@ func (s *Snapshotter) Save(snapshot *raft.Snapshot) error { return ioutil.WriteFile(path.Join(s.dir, fname), d, 0666) } -func (s *Snapshotter) Load() (*raft.Snapshot, error) { +func (s *Snapshotter) Load() (*raftpb.Snapshot, error) { names, err := s.snapNames() if err != nil { return nil, err } - var snap *raft.Snapshot + var snap *raftpb.Snapshot for _, name := range names { if snap, err = loadSnap(s.dir, name); err == nil { break @@ -65,7 +65,7 @@ func (s *Snapshotter) Load() (*raft.Snapshot, error) { return snap, err } -func loadSnap(dir, name string) (*raft.Snapshot, error) { +func loadSnap(dir, name string) (*raftpb.Snapshot, error) { var err error var b []byte @@ -82,7 +82,7 @@ func loadSnap(dir, name string) (*raft.Snapshot, error) { return nil, err } - var serializedSnap Snapshot + var serializedSnap snappb.Snapshot if err = serializedSnap.Unmarshal(b); err != nil { log.Printf("Corrupted snapshot file %v: %v", name, err) return nil, err @@ -94,8 +94,8 @@ func loadSnap(dir, name string) (*raft.Snapshot, error) { return nil, err } - var snap raft.Snapshot - if err = json.Unmarshal(serializedSnap.Data, &snap); err != nil { + var snap raftpb.Snapshot + if err = snap.Unmarshal(serializedSnap.Data); err != nil { log.Printf("Corrupted snapshot file %v: %v", name, err) return nil, err } diff --git a/snap/snapshotter_test.go b/snap/snapshotter_test.go index faebbaaba76..56a95b2d5bd 100644 --- a/snap/snapshotter_test.go +++ b/snap/snapshotter_test.go @@ -9,15 +9,14 @@ import ( "reflect" "testing" - "github.com/coreos/etcd/raft" + "github.com/coreos/etcd/raft/raftpb" ) -var testSnap = &raft.Snapshot{ - ClusterId: 0xBEEF, - Data: []byte("some snapshot"), - Nodes: []int64{1, 2, 3}, - Index: 1, - Term: 1, +var testSnap = &raftpb.Snapshot{ + Data: []byte("some snapshot"), + Nodes: []int64{1, 2, 3}, + Index: 1, + Term: 1, } func TestSaveAndLoad(t *testing.T) {