diff --git a/pkg/objstore/cos/cos.go b/pkg/objstore/cos/cos.go index 5e1e63fa51a..08252a9e042 100644 --- a/pkg/objstore/cos/cos.go +++ b/pkg/objstore/cos/cos.go @@ -229,7 +229,7 @@ func (b *Bucket) listObjects(ctx context.Context, objectPrefix string, options . // If recursive iteration is enabled we should pass an empty delimiter. delimiter := dirDelim - if !objstore.ApplyIterOptions(options...).Recursive { + if objstore.ApplyIterOptions(options...).Recursive { delimiter = "" } diff --git a/pkg/objstore/gcs/gcs.go b/pkg/objstore/gcs/gcs.go index fc4ed13fb1a..b1c578c421b 100644 --- a/pkg/objstore/gcs/gcs.go +++ b/pkg/objstore/gcs/gcs.go @@ -100,7 +100,7 @@ func (b *Bucket) Iter(ctx context.Context, dir string, f func(string) error, opt // If recursive iteration is enabled we should pass an empty delimiter. delimiter := DirDelim - if !objstore.ApplyIterOptions(options...).Recursive { + if objstore.ApplyIterOptions(options...).Recursive { delimiter = "" } diff --git a/pkg/objstore/inmem.go b/pkg/objstore/inmem.go index 0c209afda70..c6a60527ad9 100644 --- a/pkg/objstore/inmem.go +++ b/pkg/objstore/inmem.go @@ -65,10 +65,11 @@ func (b *InMemBucket) Iter(_ context.Context, dir string, f func(string) error, if params.Recursive { // Any object matching the prefix should be included. unique[filename] = struct{}{} - } else { - parts := strings.SplitAfter(filename, DirDelim) - unique[strings.Join(parts[:dirPartsCount+1], "")] = struct{}{} + continue } + + parts := strings.SplitAfter(filename, DirDelim) + unique[strings.Join(parts[:dirPartsCount+1], "")] = struct{}{} } b.mtx.RUnlock() diff --git a/pkg/objstore/oss/oss.go b/pkg/objstore/oss/oss.go index 539870c744d..953fe5c12cb 100644 --- a/pkg/objstore/oss/oss.go +++ b/pkg/objstore/oss/oss.go @@ -195,9 +195,9 @@ func (b *Bucket) Iter(ctx context.Context, dir string, f func(string) error, opt dir = strings.TrimSuffix(dir, objstore.DirDelim) + objstore.DirDelim } - var delimiter alioss.Option - if !objstore.ApplyIterOptions(options...).Recursive { - delimiter = alioss.Delimiter(objstore.DirDelim) + delimiter := alioss.Delimiter(objstore.DirDelim) + if objstore.ApplyIterOptions(options...).Recursive { + delimiter = nil } marker := alioss.Marker("") diff --git a/pkg/objstore/swift/swift.go b/pkg/objstore/swift/swift.go index d1bc5fefb9b..784d9021d3f 100644 --- a/pkg/objstore/swift/swift.go +++ b/pkg/objstore/swift/swift.go @@ -200,9 +200,12 @@ func (c *Container) Iter(_ context.Context, dir string, f func(string) error, op dir = strings.TrimSuffix(dir, string(DirDelim)) + string(DirDelim) } - listOptions := &swift.ObjectsOpts{Prefix: dir} - if !objstore.ApplyIterOptions(options...).Recursive { - listOptions.Delimiter = DirDelim + listOptions := &swift.ObjectsOpts{ + Prefix: dir, + Delimiter: DirDelim, + } + if objstore.ApplyIterOptions(options...).Recursive { + listOptions.Delimiter = rune(0) } return c.connection.ObjectsWalk(c.name, listOptions, func(opts *swift.ObjectsOpts) (interface{}, error) { diff --git a/pkg/store/bucket_e2e_test.go b/pkg/store/bucket_e2e_test.go index ddcc6622d69..fa4d645ce4d 100644 --- a/pkg/store/bucket_e2e_test.go +++ b/pkg/store/bucket_e2e_test.go @@ -196,6 +196,8 @@ func prepareStoreWithTestBlocks(t testing.TB, dir string, bkt objstore.Bucket, m // TODO(bwplotka): Benchmark Series. func testBucketStore_e2e(t *testing.T, ctx context.Context, s *storeSuite) { + t.Helper() + mint, maxt := s.store.TimeRange() testutil.Equals(t, s.minTime, mint) testutil.Equals(t, s.maxTime, maxt)