diff --git a/providers/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/GoogleCloudStorageBlobStore.java b/providers/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/GoogleCloudStorageBlobStore.java index 10ebfc176a..1cb927e6fa 100644 --- a/providers/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/GoogleCloudStorageBlobStore.java +++ b/providers/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/GoogleCloudStorageBlobStore.java @@ -214,7 +214,9 @@ public final class GoogleCloudStorageBlobStore extends BaseBlobStore { @Override public String putBlob(String container, Blob blob, PutOptions options) { - if (options.isMultipart()) { + if (options.isMultipart() || !blob.getPayload().isRepeatable()) { + // JCLOUDS-912 prevents using single-part uploads with InputStream payloads. + // Work around this with multi-part upload which buffers parts in-memory. return putMultipartBlob(container, blob, options); } else { checkNotNull(blob.getPayload().getContentMetadata().getContentLength());