diff options
| author | Chris Lu <chris.lu@gmail.com> | 2013-02-11 22:54:46 -0800 |
|---|---|---|
| committer | Chris Lu <chris.lu@gmail.com> | 2013-02-11 22:54:46 -0800 |
| commit | b395a5289b7b9a6f6d816799b0750ac82d8ef6f9 (patch) | |
| tree | b4a9d793efc1cc5660f7bb1168d8b00a3ac6c3b1 | |
| parent | 2ca983b6d823431ab8ab028a9b80dd92c836d678 (diff) | |
| download | seaweedfs-b395a5289b7b9a6f6d816799b0750ac82d8ef6f9.tar.xz seaweedfs-b395a5289b7b9a6f6d816799b0750ac82d8ef6f9.zip | |
do not truncate file if any error happens. Truncating will lose all
files after this file entry.
| -rw-r--r-- | go/storage/volume.go | 14 |
1 files changed, 3 insertions, 11 deletions
diff --git a/go/storage/volume.go b/go/storage/volume.go index 516b1589b..aeb1126d7 100644 --- a/go/storage/volume.go +++ b/go/storage/volume.go @@ -143,17 +143,9 @@ func (v *Volume) delete(n *Needle) (uint32, error) { nv, ok := v.nm.Get(n.Id) //fmt.Println("key", n.Id, "volume offset", nv.Offset, "data_size", n.Size, "cached size", nv.Size) if ok { - if err := v.nm.Delete(n.Id); err != nil { - return 0, err - } - offset, err := v.dataFile.Seek(int64(nv.Offset*NeedlePaddingSize), 0) - if err != nil { - return 0, fmt.Errorf("cannot get datafile (%s) position: %s", v.dataFile, err) - } - if _, err = n.Append(v.dataFile, v.Version()); err != nil { - v.dataFile.Truncate(offset) - return 0, err - } + v.nm.Delete(n.Id) + v.dataFile.Seek(int64(nv.Offset*NeedlePaddingSize), 0) + _, err := n.Append(v.dataFile, v.Version()) return nv.Size, err } return 0, nil |
