aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKonstantin Lebedev <9497591+kmlebedev@users.noreply.github.com>2023-04-12 20:47:20 +0500
committerGitHub <noreply@github.com>2023-04-12 08:47:20 -0700
commit88b2bbadd1b2ca6848ece40d0bffe20bf1b452fb (patch)
tree4c2f99e1adc65d226a9fe42cec6f06b5dcf37ccd
parent095cdb0c7fd76c4b523c36455575c4022fc0195c (diff)
downloadseaweedfs-88b2bbadd1b2ca6848ece40d0bffe20bf1b452fb.tar.xz
seaweedfs-88b2bbadd1b2ca6848ece40d0bffe20bf1b452fb.zip
try fix s3test test_bucket_listv2_delimiter_prefix (#4396)
-rw-r--r--weed/s3api/s3api_objects_list_handlers.go15
1 files changed, 12 insertions, 3 deletions
diff --git a/weed/s3api/s3api_objects_list_handlers.go b/weed/s3api/s3api_objects_list_handlers.go
index 50e19ba04..bf834a60a 100644
--- a/weed/s3api/s3api_objects_list_handlers.go
+++ b/weed/s3api/s3api_objects_list_handlers.go
@@ -353,7 +353,9 @@ func (s3a *S3ApiServer) doListFilerEntries(client filer_pb.SeaweedFilerClient, d
nextMarker = entry.Name
if cursor.prefixEndsOnDelimiter {
if entry.Name == prefix && entry.IsDirectory {
- cursor.prefixEndsOnDelimiter = false
+ if delimiter != "/" {
+ cursor.prefixEndsOnDelimiter = false
+ }
} else {
continue
}
@@ -363,8 +365,12 @@ func (s3a *S3ApiServer) doListFilerEntries(client filer_pb.SeaweedFilerClient, d
if entry.Name == s3_constants.MultipartUploadsFolder { // FIXME no need to apply to all directories. this extra also affects maxKeys
continue
}
- if delimiter != "/" {
- eachEntryFn(dir, entry)
+ if delimiter != "/" || cursor.prefixEndsOnDelimiter {
+ if cursor.prefixEndsOnDelimiter {
+ cursor.prefixEndsOnDelimiter = false
+ } else {
+ eachEntryFn(dir, entry)
+ }
subNextMarker, subErr := s3a.doListFilerEntries(client, dir+"/"+entry.Name, "", cursor, "", delimiter, false, eachEntryFn)
if subErr != nil {
err = fmt.Errorf("doListFilerEntries2: %v", subErr)
@@ -391,6 +397,9 @@ func (s3a *S3ApiServer) doListFilerEntries(client filer_pb.SeaweedFilerClient, d
eachEntryFn(dir, entry)
// glog.V(4).Infof("List File Entries %s, file: %s, maxKeys %d", dir, entry.Name, cursor.maxKeys)
}
+ if cursor.prefixEndsOnDelimiter {
+ cursor.prefixEndsOnDelimiter = false
+ }
}
return
}