public void onAbort() {
        for (Future<?> future : getFutures()) {
            future.cancel(true);
        }
        if (uploadId != null) {
            try {
                s3.abortMultipartUpload(new AbortMultipartUploadRequest(
                    req.getBucketName(), req.getKey(), uploadId));
            } catch (Exception e) {
                LogFactory.getLog(getClass())
                          .debug("Failed to abort multi-part upload: " + uploadId, e);
            }
        }
    }
Notified from
{@link AmazonS3EncryptionClient#uploadObject(UploadObjectRequest)} when
failed to upload any part. This method is responsible for cancelling
ongoing uploads and aborting the multi-part upload request.
aws-java-sdk-s3/src/main/java/com/amazonaws/services/s3/UploadObjectObserver.java