You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@jclouds.apache.org by "Andrew Gaul (JIRA)" <ji...@apache.org> on 2018/01/04 08:55:00 UTC
[jira] [Created] (JCLOUDS-1368) GCS cannot upload multipart file
larger than 1 GB
Andrew Gaul created JCLOUDS-1368:
------------------------------------
Summary: GCS cannot upload multipart file larger than 1 GB
Key: JCLOUDS-1368
URL: https://issues.apache.org/jira/browse/JCLOUDS-1368
Project: jclouds
Issue Type: Bug
Components: jclouds-blobstore
Affects Versions: 2.0.3
Reporter: Andrew Gaul
Assignee: Andrew Gaul
When uploading a file:
{code:java}
long size = 33L * (32L * 1024L * 1024L);
ByteSource byteSource = TestUtils.randomByteSource().slice(0, size);
blobStore.createContainerInLocation(null, containerName);
Blob blob = blobStore.blobBuilder(blobName)
.payload(byteSource)
.contentLength(size)
.build();
blobStore.putBlob(containerName, blob, PutOptions.Builder.multipart());
{code}
I see an error:
{noformat}
org.jclouds.http.HttpResponseException: command: POST https://www.googleapis.com/storage/v1/b/gaul-blobstore0/o/large-blob/compose HTTP/1.1 failed with response: HTTP/1.1 400 Bad Request; content: [{
"error": {
"errors": [
{
"domain": "global",
"reason": "invalid",
"message": "The number of source components provided (33) exceeds the maximum (32)"
}
],
"code": 400,
"message": "The number of source components provided (33) exceeds the maximum (32)"
}
}
]
{noformat}
This is due to the wonky {{MultipartUploadSlicingAlgorithm}} slicing into (31) 32 MB parts then creating a remainder 64 MB part that {{BaseBlobStore.putMultipartBlob}} does not account for. This interface seems stupid and better to create (32) 33 MB parts. Originally reported at:
https://stackoverflow.com/questions/47048264/the-number-of-source-components-provided-78-exceeds-the-maximum-32
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)