You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by da...@apache.org on 2025/01/20 02:38:54 UTC
(jackrabbit-oak) branch 1.22 updated: Merge pull request #1900 from t-rana/issues/OAK-11265 (#1997)
This is an automated email from the ASF dual-hosted git repository.
daim pushed a commit to branch 1.22
in repository https://gitbox.apache.org/repos/asf/jackrabbit-oak.git
The following commit(s) were added to refs/heads/1.22 by this push:
new 487d1db72e Merge pull request #1900 from t-rana/issues/OAK-11265 (#1997)
487d1db72e is described below
commit 487d1db72ed1fdd204056b47ff8a4ac94e4b9c15
Author: Rishabh Kumar <ri...@gmail.com>
AuthorDate: Mon Jan 20 08:08:49 2025 +0530
Merge pull request #1900 from t-rana/issues/OAK-11265 (#1997)
OAK-11265 : using single delete call for GCP
---
.../apache/jackrabbit/oak/blob/cloud/s3/S3Backend.java | 16 ++++++++++++----
1 file changed, 12 insertions(+), 4 deletions(-)
diff --git a/oak-blob-cloud/src/main/java/org/apache/jackrabbit/oak/blob/cloud/s3/S3Backend.java b/oak-blob-cloud/src/main/java/org/apache/jackrabbit/oak/blob/cloud/s3/S3Backend.java
index cad6a37ea1..14803b6cbd 100644
--- a/oak-blob-cloud/src/main/java/org/apache/jackrabbit/oak/blob/cloud/s3/S3Backend.java
+++ b/oak-blob-cloud/src/main/java/org/apache/jackrabbit/oak/blob/cloud/s3/S3Backend.java
@@ -634,13 +634,21 @@ public class S3Backend extends AbstractSharedBackend {
new ListObjectsRequest().withBucketName(bucket).withPrefix(addMetaKeyPrefix(prefix));
ObjectListing metaList = s3service.listObjects(listObjectsRequest);
List<DeleteObjectsRequest.KeyVersion> deleteList = new ArrayList<DeleteObjectsRequest.KeyVersion>();
+ List<String> keysToDelete = new ArrayList<>();
for (S3ObjectSummary s3ObjSumm : metaList.getObjectSummaries()) {
deleteList.add(new DeleteObjectsRequest.KeyVersion(s3ObjSumm.getKey()));
+ keysToDelete.add(s3ObjSumm.getKey());
}
- if (deleteList.size() > 0) {
- DeleteObjectsRequest delObjsReq = new DeleteObjectsRequest(bucket);
- delObjsReq.setKeys(deleteList);
- s3service.deleteObjects(delObjsReq);
+ if (!deleteList.isEmpty()) {
+ RemoteStorageMode mode = (RemoteStorageMode) properties.getOrDefault(S3Constants.MODE, RemoteStorageMode.S3);
+ if (mode == RemoteStorageMode.S3) {
+ DeleteObjectsRequest delObjsReq = new DeleteObjectsRequest(bucket);
+ delObjsReq.setKeys(deleteList);
+ s3service.deleteObjects(delObjsReq);
+ } else {
+ // GCP does not support bulk delete operations, hence we need to delete each object individually
+ keysToDelete.forEach(key -> s3service.deleteObject(bucket, key));
+ }
}
} finally {
if (contextClassLoader != null) {