Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Leap:15.3:Update
docker-distribution
0001-Fix-s3-driver-for-supporting-ceph-radosgw....
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0001-Fix-s3-driver-for-supporting-ceph-radosgw.patch of Package docker-distribution
From f87772650309d03049310dd7d623449554a10147 Mon Sep 17 00:00:00 2001 From: Eohyung Lee <liquidnuker@gmail.com> Date: Wed, 25 Apr 2018 23:31:07 +0900 Subject: [PATCH 1/2] Fix s3 driver for supporting ceph radosgw 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> --- registry/storage/driver/s3-aws/s3.go | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/registry/storage/driver/s3-aws/s3.go b/registry/storage/driver/s3-aws/s3.go index 126a07f6b..1f610f796 100644 --- a/registry/storage/driver/s3-aws/s3.go +++ b/registry/storage/driver/s3-aws/s3.go @@ -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 From c18c6c33b24010b3bfd3c49539f44c49681b4981 Mon Sep 17 00:00:00 2001 From: Thomas Berger <loki@lokis-chaos.de> Date: Fri, 15 Mar 2019 21:05:21 +0100 Subject: [PATCH 2/2] S3 Driver: added comment for missing KeyCount workaround Signed-off-by: Thomas Berger <loki@lokis-chaos.de> --- registry/storage/driver/s3-aws/s3.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/registry/storage/driver/s3-aws/s3.go b/registry/storage/driver/s3-aws/s3.go index 1f610f796..4b6c50d7b 100644 --- a/registry/storage/driver/s3-aws/s3.go +++ b/registry/storage/driver/s3-aws/s3.go @@ -971,6 +971,9 @@ func (d *driver) doWalk(parentCtx context.Context, objectCount *int64, path, pre listObjectErr := d.S3.ListObjectsV2PagesWithContext(ctx, listObjectsInput, func(objects *s3.ListObjectsV2Output, lastPage bool) bool { var count int64 + // KeyCount was introduced with version 2 of the GET Bucket operation in S3. + // Some S3 implementations don't support V2 now, so we fall back to manual + // calculation of the key count if required if objects.KeyCount != nil { count = *objects.KeyCount *objectCount += *objects.KeyCount
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor