diff options
| author | chrislu <chris.lu@gmail.com> | 2022-10-23 13:04:38 -0700 |
|---|---|---|
| committer | chrislu <chris.lu@gmail.com> | 2022-10-23 13:04:38 -0700 |
| commit | 184fbb6c50735ad6be35faa01554eea624109d0e (patch) | |
| tree | 8f822a1edfe084256bf91eb14023ba45e2ee04e0 /weed/storage/volume_write.go | |
| parent | 25471d579adaf85b579c7a989786e26fbbdc7872 (diff) | |
| download | seaweedfs-184fbb6c50735ad6be35faa01554eea624109d0e.tar.xz seaweedfs-184fbb6c50735ad6be35faa01554eea624109d0e.zip | |
volume server: remote tier volumes only soft delete in local index
fix https://github.com/seaweedfs/seaweedfs/issues/3889
Diffstat (limited to 'weed/storage/volume_write.go')
| -rw-r--r-- | weed/storage/volume_write.go | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/weed/storage/volume_write.go b/weed/storage/volume_write.go index 2dc813216..2e0fc4de1 100644 --- a/weed/storage/volume_write.go +++ b/weed/storage/volume_write.go @@ -213,13 +213,17 @@ func (v *Volume) doDeleteRequest(n *needle.Needle) (Size, 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 && nv.Size.IsValid() { - size := nv.Size - n.Data = nil - n.AppendAtNs = uint64(time.Now().UnixNano()) - offset, _, _, err := n.Append(v.DataBackend, v.Version()) - v.checkReadWriteError(err) - if err != nil { - return size, err + var offset uint64 + var err error + if !v.hasRemoteFile { + size := nv.Size + n.Data = nil + n.AppendAtNs = uint64(time.Now().UnixNano()) + offset, _, _, err = n.Append(v.DataBackend, v.Version()) + v.checkReadWriteError(err) + if err != nil { + return size, err + } } v.lastAppendAtNs = n.AppendAtNs if err = v.nm.Delete(n.Id, ToOffset(int64(offset))); err != nil { |
