private void onUploadFinished()

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());
    }
  }