Skip to content

Commit ce294e1

Browse files
Better Logging S3 Bulk Delete Failures (#50203) (#50262)
Unfortunately bulk delete exceptions don't show the individual delete errors when a bulk delete fails when you log them outright so I added this work-around to get the individual details to get useful logging.
1 parent c6fdf9e commit ce294e1

File tree

1 file changed

+9
-0
lines changed

1 file changed

+9
-0
lines changed

plugins/repository-s3/src/main/java/org/elasticsearch/repositories/s3/S3BlobContainer.java

+9
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@
3232
import com.amazonaws.services.s3.model.PutObjectRequest;
3333
import com.amazonaws.services.s3.model.UploadPartRequest;
3434
import com.amazonaws.services.s3.model.UploadPartResult;
35+
import org.apache.logging.log4j.LogManager;
36+
import org.apache.logging.log4j.Logger;
37+
import org.apache.logging.log4j.message.ParameterizedMessage;
3538
import org.apache.lucene.util.SetOnce;
3639
import org.elasticsearch.ExceptionsHelper;
3740
import org.elasticsearch.common.Nullable;
@@ -61,6 +64,8 @@
6164

6265
class S3BlobContainer extends AbstractBlobContainer {
6366

67+
private static final Logger logger = LogManager.getLogger(S3BlobContainer.class);
68+
6469
/**
6570
* Maximum number of deletes in a {@link DeleteObjectsRequest}.
6671
* @see <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/multiobjectdeleteapi.html">S3 Documentation</a>.
@@ -189,6 +194,10 @@ private void doDeleteBlobs(List<String> blobNames, boolean relative) throws IOEx
189194
outstanding.removeAll(keysInRequest);
190195
outstanding.addAll(
191196
e.getErrors().stream().map(MultiObjectDeleteException.DeleteError::getKey).collect(Collectors.toSet()));
197+
logger.warn(
198+
() -> new ParameterizedMessage("Failed to delete some blobs {}", e.getErrors()
199+
.stream().map(err -> "[" + err.getKey() + "][" + err.getCode() + "][" + err.getMessage() + "]")
200+
.collect(Collectors.toList())), e);
192201
aex = ExceptionsHelper.useOrSuppress(aex, e);
193202
} catch (AmazonClientException e) {
194203
// The AWS client threw any unexpected exception and did not execute the request at all so we do not

0 commit comments

Comments
 (0)