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 d69955f41c Merge pull request #1902 from t-rana/issues/OAK-11306 
(#2000)
d69955f41c is described below

commit d69955f41c3e2e19798f969d190210e68d98ee22
Author: Rishabh Kumar <rishabhdaim1...@gmail.com>
AuthorDate: Mon Jan 20 08:16:38 2025 +0530

    Merge pull request #1902 from t-rana/issues/OAK-11306 (#2000)
    
    OAK-11306: fix GCP bucket cleanup post running tests
---
 .../jackrabbit/oak/blob/cloud/s3/S3Backend.java    |  2 +-
 .../oak/blob/cloud/s3/S3DataStoreUtils.java        | 23 ++++++++++++++++++----
 2 files changed, 20 insertions(+), 5 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 e03cfef6a0..cc2b4d7727 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
@@ -1404,7 +1404,7 @@ public class S3Backend extends AbstractSharedBackend {
     /**
      * Enum to indicate remote storage mode
      */
-    private enum RemoteStorageMode {
+    enum RemoteStorageMode {
         S3,
         GCP
     }
diff --git 
a/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/S3DataStoreUtils.java
 
b/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/S3DataStoreUtils.java
index cbef6561d1..c32ee6798d 100644
--- 
a/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/S3DataStoreUtils.java
+++ 
b/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/S3DataStoreUtils.java
@@ -47,10 +47,12 @@ import org.apache.commons.io.IOUtils;
 import org.apache.jackrabbit.core.data.DataStore;
 import org.apache.jackrabbit.oak.commons.PropertiesUtil;
 import org.apache.jackrabbit.oak.plugins.blob.datastore.DataStoreUtils;
+import org.jetbrains.annotations.NotNull;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import static com.google.common.base.StandardSystemProperty.USER_HOME;
+import static 
org.apache.jackrabbit.oak.blob.cloud.s3.S3Backend.RemoteStorageMode;
 
 /**
  * Extension to {@link DataStoreUtils} to enable S3 extensions for cleaning 
and initialization.
@@ -160,13 +162,20 @@ public class S3DataStoreUtils extends DataStoreUtils {
                 ObjectListing prevObjectListing = 
s3service.listObjects(bucket);
                 while (prevObjectListing != null) {
                     List<DeleteObjectsRequest.KeyVersion> deleteList = new 
ArrayList<DeleteObjectsRequest.KeyVersion>();
+                    List<String> keysToDelete = new ArrayList<>();
                     for (S3ObjectSummary s3ObjSumm : 
prevObjectListing.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 = getMode(props);
+                        if (mode == RemoteStorageMode.S3) {
+                            DeleteObjectsRequest delObjsReq = new 
DeleteObjectsRequest(bucket);
+                            delObjsReq.setKeys(deleteList);
+                            s3service.deleteObjects(delObjsReq);
+                        } else {
+                            keysToDelete.forEach(key -> 
s3service.deleteObject(bucket, key));
+                        }
                     }
                     if (!prevObjectListing.isTruncated())
                         break;
@@ -182,6 +191,12 @@ public class S3DataStoreUtils extends DataStoreUtils {
         s3service.shutdown();
     }
 
+    @NotNull
+    private static RemoteStorageMode getMode(@NotNull Properties props) {
+        return props.getProperty(S3Constants.S3_END_POINT, 
"").contains("googleapis") ?
+                RemoteStorageMode.GCP : RemoteStorageMode.S3;
+    }
+
     protected static HttpsURLConnection getHttpsConnection(long length, URI 
uri) throws IOException {
         HttpsURLConnection conn = (HttpsURLConnection) 
uri.toURL().openConnection();
         conn.setDoOutput(true);

Reply via email to