From 9cc87735fe0acda359841d73251de94d75580014 Mon Sep 17 00:00:00 2001 From: FourSpaces Date: Mon, 17 Mar 2025 16:19:01 +0800 Subject: [PATCH] fix(objectnode): S3 Folder not recursively deleted Signed-off-by: FourSpaces --- objectnode/fs_volume.go | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/objectnode/fs_volume.go b/objectnode/fs_volume.go index d1ad65fb3..bbf45798d 100644 --- a/objectnode/fs_volume.go +++ b/objectnode/fs_volume.go @@ -24,6 +24,7 @@ import ( "hash" "io" "os" + os_path "path" "reflect" "sort" "strconv" @@ -941,6 +942,20 @@ func (v *Volume) DeletePath(path string) (err error) { if err = v.mw.Evict(ino, path); err != nil { log.LogWarnf("DeletePath Evict: path(%v) inode(%v)", path, ino) } + + // Recursive deletion of empty directory + if os_path.Dir(path) == "." { + return + } else { + log.LogInfof("os_path.Dir(path): (%v)", os_path.Dir(path)) + + if err = v.DeletePath(fmt.Sprintf("%s/", os_path.Dir(path))); err != nil { + log.LogErrorf("Recursive DeletePath: delete path fail: path(%v) err(%v)", path, err) + return + } + return + } + err = nil return }