Skip to content

Commit

Permalink
Fix s3 driver for supporting ceph radosgw
Browse files Browse the repository at this point in the history
Radosgw does not support S3 `GET Bucket` API v2 API but v1.
This API has backward compatibility, so most of this API is working
correctly but we can not get `KeyCount` in v1 API and which is only
for v2 API.

Signed-off-by: Eohyung Lee <liquidnuker@gmail.com>
  • Loading branch information
leoh0 authored and wy65701436 committed Mar 10, 2020
1 parent bdf503a commit 0a1e4a5
Showing 1 changed file with 10 additions and 2 deletions.
12 changes: 10 additions & 2 deletions registry/storage/driver/s3-aws/s3.go
Expand Up @@ -970,8 +970,16 @@ func (d *driver) doWalk(parentCtx context.Context, objectCount *int64, path, pre
defer done("s3aws.ListObjectsV2Pages(%s)", path)
listObjectErr := d.S3.ListObjectsV2PagesWithContext(ctx, listObjectsInput, func(objects *s3.ListObjectsV2Output, lastPage bool) bool {

*objectCount += *objects.KeyCount
walkInfos := make([]walkInfoContainer, 0, *objects.KeyCount)
var count int64
if objects.KeyCount != nil {
count = *objects.KeyCount
*objectCount += *objects.KeyCount
} else {
count = int64(len(objects.Contents) + len(objects.CommonPrefixes))
*objectCount += count
}

walkInfos := make([]walkInfoContainer, 0, count)

for _, dir := range objects.CommonPrefixes {
commonPrefix := *dir.Prefix
Expand Down

0 comments on commit 0a1e4a5

Please sign in to comment.