in src/main/java/software/amazon/encryption/s3/internal/UploadObjectObserver.java [62:91]
public void onPartCreate(PartCreationEvent event) {
final File part = event.getPart();
final UploadPartRequest reqUploadPart =
newUploadPartRequest(event);
final OnFileDelete fileDeleteObserver = event.getFileDeleteObserver();
futures.add(es.submit(new Callable<Map<Integer, UploadPartResponse>>() {
@Override
public Map<Integer, UploadPartResponse> call() {
// Upload the ciphertext directly via the non-encrypting
// s3 client
try {
AsyncRequestBody noRetriesBody = new NoRetriesAsyncRequestBody(AsyncRequestBody.fromFile(part));
return uploadPart(reqUploadPart, noRetriesBody);
} catch (CompletionException e) {
// Unwrap completion exception
throw new S3EncryptionClientException(e.getCause().getMessage(), e.getCause());
} finally {
// clean up part already uploaded
if (!part.delete()) {
LogFactory.getLog(getClass()).debug(
"Ignoring failure to delete file " + part
+ " which has already been uploaded");
} else {
if (fileDeleteObserver != null)
fileDeleteObserver.onFileDelete(null);
}
}
}
}));
}