diff options
author | Nick Thomas <nick@gitlab.com> | 2018-09-14 15:51:01 +0000 |
---|---|---|
committer | Nick Thomas <nick@gitlab.com> | 2018-09-14 15:51:01 +0000 |
commit | 877c88897ee6f72b81a76e9abfc32f1d1fdb61b6 (patch) | |
tree | fd4e470cf9d1506d25c144b0e4a6da0cb317a634 | |
parent | abdb0d3680a67d175f73eebc99408f42565d8c9c (diff) | |
parent | 244ed8adb3bc2d1b4706a695e19e144e180084f3 (diff) | |
download | gitlab-ce-877c88897ee6f72b81a76e9abfc32f1d1fdb61b6.tar.gz |
Merge branch 'sh-fix-multipart-upload-signed-urls' into 'master'
Fix object storage uploads not working with AWS v2
Closes gitlab-workhorse#181
See merge request gitlab-org/gitlab-ce!21731
-rw-r--r-- | changelogs/unreleased/sh-fix-multipart-upload-signed-urls.yml | 5 | ||||
-rw-r--r-- | lib/object_storage/direct_upload.rb | 6 | ||||
-rw-r--r-- | spec/lib/object_storage/direct_upload_spec.rb | 10 |
3 files changed, 18 insertions, 3 deletions
diff --git a/changelogs/unreleased/sh-fix-multipart-upload-signed-urls.yml b/changelogs/unreleased/sh-fix-multipart-upload-signed-urls.yml new file mode 100644 index 00000000000..994765bc1fd --- /dev/null +++ b/changelogs/unreleased/sh-fix-multipart-upload-signed-urls.yml @@ -0,0 +1,5 @@ +--- +title: Fix object storage uploads not working with AWS v2 +merge_request: 21731 +author: +type: fixed diff --git a/lib/object_storage/direct_upload.rb b/lib/object_storage/direct_upload.rb index ab43910c8bd..97f56e10ccf 100644 --- a/lib/object_storage/direct_upload.rb +++ b/lib/object_storage/direct_upload.rb @@ -89,7 +89,7 @@ module ObjectStorage method: 'PUT', bucket_name: bucket_name, object_name: object_name, - query: { uploadId: upload_id, partNumber: part_number }, + query: { 'uploadId' => upload_id, 'partNumber' => part_number }, headers: upload_options }, expire_at) end @@ -100,7 +100,7 @@ module ObjectStorage method: 'POST', bucket_name: bucket_name, object_name: object_name, - query: { uploadId: upload_id }, + query: { 'uploadId' => upload_id }, headers: { 'Content-Type' => 'application/xml' } }, expire_at) end @@ -111,7 +111,7 @@ module ObjectStorage method: 'DELETE', bucket_name: bucket_name, object_name: object_name, - query: { uploadId: upload_id } + query: { 'uploadId' => upload_id } }, expire_at) end diff --git a/spec/lib/object_storage/direct_upload_spec.rb b/spec/lib/object_storage/direct_upload_spec.rb index 9c308cc1be9..1024e1a25ea 100644 --- a/spec/lib/object_storage/direct_upload_spec.rb +++ b/spec/lib/object_storage/direct_upload_spec.rb @@ -83,6 +83,16 @@ describe ObjectStorage::DirectUpload do expect(subject[:MultipartUpload][:AbortURL]).to start_with(storage_url) expect(subject[:MultipartUpload][:AbortURL]).to include('uploadId=myUpload') end + + it 'uses only strings in query parameters' do + expect(direct_upload.send(:connection)).to receive(:signed_url).at_least(:once) do |params| + if params[:query] + expect(params[:query].keys.all? { |key| key.is_a?(String) }).to be_truthy + end + end + + subject + end end shared_examples 'a valid upload without multipart data' do |