You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Multipart uploads to Riak CS from aws-sdk-go based clients fail with a 477 HTTP response. It appears that Riak CS cannot handle aws-sdk-go's chosen method of quoting etags in the CompleteMultipartUpload body. #490 involves a client using aws-sdk-ruby, which uses " to quote the etag values in the CompleteMultipartUpload body; this blew up the CompleteMultipartUpload processing.
In #490 a fix was made in 5cba5e6 to handle " specifically.
This new issue involves a client using aws-sdk-go, which uses " to quote the etag value, and causes a similar 477 failure as originally seen in #490.
Example CompleteMultipartUpload POST from aws-sdk-go:
POST /some-bucket/foo?uploadId=z0D6DrTJSC2DjrF9Xe5W2w%3D%3D HTTP/1.1
Host: x.x.x.x:8080
User-Agent: aws-sdk-go/1.0.2 (go1.6; linux; amd64) S3Manager
Content-Length: 427
Authorization: AWS xxxxxxxxxxxxxxxxxxxx:xxxxxxxxxxxxxxxxxxxxxxxxxxxx
x-amz-date: Tue, 24 May 2016 19:28:25 UTC
Accept-Encoding: gzip
<CompleteMultipartUpload><Part><ETag>"5f363e0e58a95f06cbe9bbc662c5dfb6"</ETag><PartNumber>1</PartNumber></Part><Part><ETag>"5f363e0e58a95f06cbe9bbc662c5dfb6"</ETag><PartNumber>2</PartNumber></Part><Part><ETag>"5f363e0e58a95f06cbe9bbc662c5dfb6"</ETag><PartNumber>3</PartNumber></Part><Part><ETag>"b6d81b360a5672d80c27430f39153e2c"</ETag><PartNumber>4</PartNumber></Part></CompleteMultipartUpload>
I am NO erlang/riak/riak-cs/xmerl wizard by any means, but some random observations:
The approach of preprocessing out these quotes prior to XML parsing seems really strange and brittle (this issue itself is an example of the brittleness). I'm not sure if the failure is due to 1) XML parsing not being able to deal with the quotes or 2) XML parsing is fine but the mere presence of the quotes in the etag values breaks later processing. So I'm not 100% clear on the intent of the preprocessing; that approach solves both 1 and 2, but I'm not sure which issue is causing the failure. If the issue is 1, then the question is "why isn't xmerl handling this valid XML?" If the issue is 2, postprocessing the etag values after XML processing seems apropos.
Summary
Riak CS version 2.1.1.
This is a new variant of #490.
Multipart uploads to Riak CS from aws-sdk-go based clients fail with a 477 HTTP response. It appears that Riak CS cannot handle aws-sdk-go's chosen method of quoting etags in the CompleteMultipartUpload body.
#490 involves a client using aws-sdk-ruby, which uses
"
to quote the etag values in the CompleteMultipartUpload body; this blew up the CompleteMultipartUpload processing.In #490 a fix was made in 5cba5e6 to handle
"
specifically.This new issue involves a client using aws-sdk-go, which uses
"
to quote the etag value, and causes a similar 477 failure as originally seen in #490.Example CompleteMultipartUpload POST from aws-sdk-go:
Reproduction
My context for this problem: CloudFoundry BOSH director using https://github.com/pivotal-golang/s3cli to upload large files to Riak CS.
Build and use https://github.com/pivotal-golang/s3cli to upload a > 5MB file to Riak CS.
The text was updated successfully, but these errors were encountered: