Hi Andrew, I'm running jclouds 2.3.0 these days. Here's the call stack:
java.lang.NullPointerException: Null id at org.jclouds.blobstore.domain.AutoValue_MultipartUpload.<init>(AutoValue_MultipartUpload.java:32) ~[jclouds-blobstore-2.3.0.jar:2.3.0] at org.jclouds.blobstore.domain.MultipartUpload.create(MultipartUpload.java:35) ~[jclouds-blobstore-2.3.0.jar:2.3.0] at org.jclouds.s3.blobstore.S3BlobStore.initiateMultipartUpload(S3BlobStore.java:371) ~[s3-2.3.0.jar:2.3.0] at org.jclouds.blobstore.internal.BaseBlobStore.putMultipartBlob(BaseBlobStore.java:356) ~[jclouds-blobstore-2.3.0.jar:2.3.0] at org.jclouds.blobstore.internal.BaseBlobStore.putMultipartBlob(BaseBlobStore.java:349) ~[jclouds-blobstore-2.3.0.jar:2.3.0] at org.jclouds.s3.blobstore.S3BlobStore.putBlob(S3BlobStore.java:262) ~[s3-2.3.0.jar:2.3.0] My code calls S3BlobStore.putBlob as follows: blobStore.putBlob(cspInfo.getContainer(), blob, multipart()); blob is defined as: Blob blob = blobStore.blobBuilder(key) .payload(content) .contentDisposition(key) .contentLength(meta.getContentLength()) .contentMD5(HashCode.fromBytes(meta.getChecksum())) .contentType(MediaType.APPLICATION_OCTET_STREAM) .userMetadata(meta.getUserMeta()) .build(); When it happens (not very often), the problem seems to be here (in S3BlobStore.java): @Override public MultipartUpload initiateMultipartUpload(String container, BlobMetadata blobMetadata, PutOptions overrides) { PutObjectOptions options = new PutObjectOptions(); if (overrides.getBlobAccess() == BlobAccess.PUBLIC_READ) { options = options.withAcl(CannedAccessPolicy.PUBLIC_READ); } String id = sync.initiateMultipartUpload(container, blob2ObjectMetadata.apply(blobMetadata), options); return MultipartUpload.create(container, blobMetadata.getName(), id, blobMetadata, overrides); } In the last two lines 'id' is returned by the S3Client (sync) during the initiateMultipartUpload call. But id is occasionally returned as null for some reason. To be fair, I've only seen this happen once. I tried to chase it further, but (to be completely honest), I do not (nor have I ever been able to) figure out how to get past the S3Client barrier in jclouds. That is, I'm not very good with guice, so I don't know how to follow the code properly past a guice binding interface like S3Client.