Browse Source

s3: avoid looping if the directory is empty

fix https://github.com/chrislusf/seaweedfs/issues/1701
ftp
Chris Lu 4 years ago
parent
commit
8e48a235e2
  1. 5
      weed/s3api/s3api_objects_list_handlers.go

5
weed/s3api/s3api_objects_list_handlers.go

@ -317,8 +317,10 @@ func (s3a *S3ApiServer) isDirectoryAllEmpty(filerClient filer_pb.SeaweedFilerCli
currentDir := parentDir + "/" + name currentDir := parentDir + "/" + name
var startFrom string var startFrom string
var isExhausted bool var isExhausted bool
var foundEntry bool
for fileCounter == 0 && !isExhausted && err == nil { for fileCounter == 0 && !isExhausted && err == nil {
err = filer_pb.SeaweedList(filerClient, currentDir, "", func(entry *filer_pb.Entry, isLast bool) error { err = filer_pb.SeaweedList(filerClient, currentDir, "", func(entry *filer_pb.Entry, isLast bool) error {
foundEntry = true
if entry.IsDirectory { if entry.IsDirectory {
subDirs = append(subDirs, entry.Name) subDirs = append(subDirs, entry.Name)
} else { } else {
@ -329,6 +331,9 @@ func (s3a *S3ApiServer) isDirectoryAllEmpty(filerClient filer_pb.SeaweedFilerCli
glog.V(4).Infof(" * %s/%s isLast: %t", currentDir, startFrom, isLast) glog.V(4).Infof(" * %s/%s isLast: %t", currentDir, startFrom, isLast)
return nil return nil
}, startFrom, false, 8) }, startFrom, false, 8)
if !foundEntry {
break
}
} }
if err != nil { if err != nil {

Loading…
Cancel
Save