aboutsummaryrefslogtreecommitdiff
path: root/weed/storage/volume_write.go
diff options
context:
space:
mode:
authorchrislu <chris.lu@gmail.com>2022-10-23 13:04:38 -0700
committerchrislu <chris.lu@gmail.com>2022-10-23 13:04:38 -0700
commit184fbb6c50735ad6be35faa01554eea624109d0e (patch)
tree8f822a1edfe084256bf91eb14023ba45e2ee04e0 /weed/storage/volume_write.go
parent25471d579adaf85b579c7a989786e26fbbdc7872 (diff)
downloadseaweedfs-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.go18
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 {