From 71bed489163e923739a42b0203e5b35e0a414aed Mon Sep 17 00:00:00 2001 From: Xiang Li Date: Wed, 11 Feb 2015 10:21:19 -0800 Subject: [PATCH] snap: add Read function --- snap/snapshotter.go | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/snap/snapshotter.go b/snap/snapshotter.go index 61e86b724..0e76a9172 100644 --- a/snap/snapshotter.go +++ b/snap/snapshotter.go @@ -86,25 +86,25 @@ func (s *Snapshotter) Load() (*raftpb.Snapshot, error) { } func loadSnap(dir, name string) (*raftpb.Snapshot, error) { - var err error - var b []byte - fpath := path.Join(dir, name) - defer func() { - if err != nil { - renameBroken(fpath) - } - }() - - b, err = ioutil.ReadFile(fpath) + snap, err := Read(fpath) if err != nil { - log.Printf("snap: snapshotter cannot read file %v: %v", name, err) + renameBroken(fpath) + } + return snap, err +} + +// Read reads the snapshot named by snapname and returns the snapshot. +func Read(snapname string) (*raftpb.Snapshot, error) { + b, err := ioutil.ReadFile(snapname) + if err != nil { + log.Printf("snap: snapshotter cannot read file %v: %v", snapname, err) return nil, err } var serializedSnap snappb.Snapshot if err = serializedSnap.Unmarshal(b); err != nil { - log.Printf("snap: corrupted snapshot file %v: %v", name, err) + log.Printf("snap: corrupted snapshot file %v: %v", snapname, err) return nil, err } @@ -115,13 +115,13 @@ func loadSnap(dir, name string) (*raftpb.Snapshot, error) { crc := crc32.Update(0, crcTable, serializedSnap.Data) if crc != serializedSnap.Crc { - log.Printf("snap: corrupted snapshot file %v: crc mismatch", name) + log.Printf("snap: corrupted snapshot file %v: crc mismatch", snapname) return nil, ErrCRCMismatch } var snap raftpb.Snapshot if err = snap.Unmarshal(serializedSnap.Data); err != nil { - log.Printf("snap: corrupted snapshot file %v: %v", name, err) + log.Printf("snap: corrupted snapshot file %v: %v", snapname, err) return nil, err } return &snap, nil