aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--weed/filer/filer.go8
-rw-r--r--weed/server/filer_grpc_server.go9
2 files changed, 13 insertions, 4 deletions
diff --git a/weed/filer/filer.go b/weed/filer/filer.go
index 23a7d71e5..cc7f6a336 100644
--- a/weed/filer/filer.go
+++ b/weed/filer/filer.go
@@ -355,11 +355,17 @@ func (f *Filer) FindEntry(ctx context.Context, p util.FullPath) (entry *Entry, e
if entry.GetS3ExpireTime().Before(time.Now()) && !entry.IsS3Versioning() {
if delErr := f.doDeleteEntryMetaAndData(ctx, entry, true, false, nil); delErr != nil {
glog.ErrorfCtx(ctx, "FindEntry doDeleteEntryMetaAndData %s failed: %v", entry.FullPath, delErr)
+ // Deletion failed - return entry as still existing rather than claiming it's gone
+ return entry, nil
}
return nil, filer_pb.ErrNotFound
}
} else if entry.Crtime.Add(time.Duration(entry.TtlSec) * time.Second).Before(time.Now()) {
- f.Store.DeleteOneEntry(ctx, entry)
+ if delErr := f.Store.DeleteOneEntry(ctx, entry); delErr != nil {
+ glog.ErrorfCtx(ctx, "FindEntry DeleteOneEntry %s failed: %v", entry.FullPath, delErr)
+ // Deletion failed - return entry as still existing rather than claiming it's gone
+ return entry, nil
+ }
return nil, filer_pb.ErrNotFound
}
}
diff --git a/weed/server/filer_grpc_server.go b/weed/server/filer_grpc_server.go
index 8b61379f9..6a2a3d28f 100644
--- a/weed/server/filer_grpc_server.go
+++ b/weed/server/filer_grpc_server.go
@@ -293,12 +293,15 @@ func (fs *FilerServer) DeleteEntry(ctx context.Context, req *filer_pb.DeleteEntr
err = fs.filer.DeleteEntryMetaAndData(ctx, util.JoinPath(req.Directory, req.Name), req.IsRecursive, req.IgnoreRecursiveError, req.IsDeleteData, req.IsFromOtherCluster, req.Signatures, req.IfNotModifiedAfter)
resp = &filer_pb.DeleteEntryResponse{}
- if err != nil && err != filer_pb.ErrNotFound {
- resp.Error = err.Error()
+ if err != nil {
+ if err != filer_pb.ErrNotFound {
+ resp.Error = err.Error()
+ }
+ // Return early: either a real error or entry not found (nothing deleted, so no cleanup needed)
return resp, nil
}
- // Optional cleanup of empty parent directories
+ // Optional cleanup of empty parent directories (only if deletion succeeded)
if req.DeleteEmptyParentDirectories {
stopAtPath := util.FullPath(req.DeleteEmptyParentDirectoriesStopPath)
if stopAtPath == "" {