in teamcity-s3-sdk/src/main/java/jetbrains/buildServer/artifacts/s3/publish/presigned/upload/S3SignedUploadManager.java [151:173]
private void onUploadFinished(@NotNull final S3PresignedUpload upload, final boolean isSuccess, boolean isRecoverable) {
LOGGER.debug("Sending " + (isSuccess ? "success" : "abort") + " multipart upload for manager " + this + " started...");
final String uploadId = myMultipartUploadIds.get(upload.getObjectKey());
if (uploadId != null && upload instanceof S3PresignedMultipartUpload) {
final S3PresignedMultipartUpload multipartUpload = (S3PresignedMultipartUpload)upload;
try {
myRetrier.execute(() -> {
if (isSuccess) {
myPresignedUrlsProviderClient.completeMultipartUpload(new MultipartUploadCompleteRequestDto(multipartUpload.getObjectKey(), uploadId, multipartUpload.getEtags()));
} else if (!isRecoverable) {
myPresignedUrlsProviderClient.abortMultipartUpload(new MultipartUploadAbortRequestDto(multipartUpload.getObjectKey(), uploadId));
}
});
LOGGER.debug("Multipart upload for " + this + " has been " + (isSuccess ? "completed" : "aborted"));
} catch (Exception e) {
final String message = "Failed to " + (isSuccess ? "complete" : "abort") + " multipart upload for " + this;
LOGGER.warnAndDebugDetails(message, e);
throw new FileUploadFailedException(message, false, e);
}
myS3ObjectKeys.remove(upload.getObjectKey());
myMultipartUploadIds.remove(upload.getObjectKey());
}
}