aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2013-02-11 22:54:46 -0800
committerChris Lu <chris.lu@gmail.com>2013-02-11 22:54:46 -0800
commitb395a5289b7b9a6f6d816799b0750ac82d8ef6f9 (patch)
treeb4a9d793efc1cc5660f7bb1168d8b00a3ac6c3b1
parent2ca983b6d823431ab8ab028a9b80dd92c836d678 (diff)
downloadseaweedfs-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.go14
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