From 4e82063782c346ebb50501ed143c3d48ac23461a Mon Sep 17 00:00:00 2001 From: Qiu Jian Date: Wed, 7 Aug 2019 18:57:23 +0800 Subject: [PATCH] fix: not return prefix object when list bucket object in non-recursive mode --- pkg/cloudprovider/objectstore.go | 9 ++++++--- pkg/multicloud/objectstore/buckets.go | 3 +++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/pkg/cloudprovider/objectstore.go b/pkg/cloudprovider/objectstore.go index c448a2175b..c7d2ab398a 100644 --- a/pkg/cloudprovider/objectstore.go +++ b/pkg/cloudprovider/objectstore.go @@ -200,9 +200,12 @@ func GetIObjects(bucket ICloudBucket, objectPrefix string, isRecursive bool) ([] } // Send all objects - if len(result.Objects) > 0 { - ret = append(ret, result.Objects...) - marker = result.Objects[len(result.Objects)-1].GetKey() + for i := range result.Objects { + if !isRecursive && result.Objects[i].GetKey() == objectPrefix { + continue + } + ret = append(ret, result.Objects[i]) + marker = result.Objects[i].GetKey() } // Send all common prefixes if any. diff --git a/pkg/multicloud/objectstore/buckets.go b/pkg/multicloud/objectstore/buckets.go index 72ac60d2ca..36c9d163a9 100644 --- a/pkg/multicloud/objectstore/buckets.go +++ b/pkg/multicloud/objectstore/buckets.go @@ -130,6 +130,9 @@ func (bucket *SBucket) GetIObjects(prefix string, isRecursive bool) ([]cloudprov if object.Err != nil { return nil, errors.Wrap(object.Err, "ListObjects") } + if !isRecursive && prefix == object.Key { + continue + } obj := &SObject{ bucket: bucket, SBaseCloudObject: cloudprovider.SBaseCloudObject{