diff --git a/services/s3/src/main/java/software/amazon/awssdk/services/s3/internal/multipart/UploadWithUnknownContentLengthHelper.java b/services/s3/src/main/java/software/amazon/awssdk/services/s3/internal/multipart/UploadWithUnknownContentLengthHelper.java index fa8be1e0c6f3..0c8c3c70b516 100644 --- a/services/s3/src/main/java/software/amazon/awssdk/services/s3/internal/multipart/UploadWithUnknownContentLengthHelper.java +++ b/services/s3/src/main/java/software/amazon/awssdk/services/s3/internal/multipart/UploadWithUnknownContentLengthHelper.java @@ -174,11 +174,13 @@ public void onNext(AsyncRequestBody asyncRequestBody) { subscription.cancel(); } else { uploadId = createMultipartUploadResponse.uploadId(); - uploadIdFuture.complete(uploadId); log.debug(() -> "Initiated a new multipart upload, uploadId: " + uploadId); sendUploadPartRequest(uploadId, firstRequestBody); sendUploadPartRequest(uploadId, asyncRequestBody); + + // We need to complete the uploadIdFuture *after* the first two requests have been sent + uploadIdFuture.complete(uploadId); } }); CompletableFutureUtils.forwardExceptionTo(returnFuture, createMultipartUploadFuture);