diff --git a/plugins/repository-s3/src/main/java/org/elasticsearch/repositories/s3/S3BlobContainer.java b/plugins/repository-s3/src/main/java/org/elasticsearch/repositories/s3/S3BlobContainer.java index f73bc7c8732cb..e07954e482160 100644 --- a/plugins/repository-s3/src/main/java/org/elasticsearch/repositories/s3/S3BlobContainer.java +++ b/plugins/repository-s3/src/main/java/org/elasticsearch/repositories/s3/S3BlobContainer.java @@ -32,6 +32,9 @@ import com.amazonaws.services.s3.model.PutObjectRequest; import com.amazonaws.services.s3.model.UploadPartRequest; import com.amazonaws.services.s3.model.UploadPartResult; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.message.ParameterizedMessage; import org.apache.lucene.util.SetOnce; import org.elasticsearch.ExceptionsHelper; import org.elasticsearch.common.Nullable; @@ -61,6 +64,8 @@ class S3BlobContainer extends AbstractBlobContainer { + private static final Logger logger = LogManager.getLogger(S3BlobContainer.class); + /** * Maximum number of deletes in a {@link DeleteObjectsRequest}. * @see S3 Documentation. @@ -194,6 +199,10 @@ private void doDeleteBlobs(List blobNames, boolean relative) throws IOEx outstanding.removeAll(keysInRequest); outstanding.addAll( e.getErrors().stream().map(MultiObjectDeleteException.DeleteError::getKey).collect(Collectors.toSet())); + logger.warn( + () -> new ParameterizedMessage("Failed to delete some blobs {}", e.getErrors() + .stream().map(err -> "[" + err.getKey() + "][" + err.getCode() + "][" + err.getMessage() + "]") + .collect(Collectors.toList())), e); aex = ExceptionsHelper.useOrSuppress(aex, e); } catch (AmazonClientException e) { // The AWS client threw any unexpected exception and did not execute the request at all so we do not