From 2b910d1cf8244fdddebd8ff263c701ace9f5434d Mon Sep 17 00:00:00 2001 From: Konstantin Lebedev <9497591+kmlebedev@users.noreply.github.com> Date: Fri, 25 Nov 2022 21:45:47 +0500 Subject: [PATCH] avoid recursive deleting newly created empty directories (#4016) --- weed/s3api/s3api_objects_list_handlers.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/weed/s3api/s3api_objects_list_handlers.go b/weed/s3api/s3api_objects_list_handlers.go index 65a176617..c1dbafefe 100644 --- a/weed/s3api/s3api_objects_list_handlers.go +++ b/weed/s3api/s3api_objects_list_handlers.go @@ -18,6 +18,8 @@ import ( "github.com/seaweedfs/seaweedfs/weed/s3api/s3err" ) +const cutoffTimeNewEmptyDir = 3 + type ListBucketResultV2 struct { XMLName xml.Name `xml:"http://s3.amazonaws.com/doc/2006-03-01/ ListBucketResult"` Name string `xml:"Name"` @@ -407,11 +409,16 @@ func (s3a *S3ApiServer) ensureDirectoryAllEmpty(filerClient filer_pb.SeaweedFile var startFrom string var isExhausted bool var foundEntry bool + cutOffTimeAtSec := time.Now().Unix() + cutoffTimeNewEmptyDir for fileCounter == 0 && !isExhausted && err == nil { err = filer_pb.SeaweedList(filerClient, currentDir, "", func(entry *filer_pb.Entry, isLast bool) error { foundEntry = true if entry.IsDirectory { - subDirs = append(subDirs, entry.Name) + if entry.Attributes != nil && cutOffTimeAtSec >= entry.Attributes.GetCrtime() { + fileCounter++ + } else { + subDirs = append(subDirs, entry.Name) + } } else { fileCounter++ }