diff options
| -rw-r--r-- | weed/filer/filer.go | 8 | ||||
| -rw-r--r-- | weed/server/filer_grpc_server.go | 9 |
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 == "" { |
