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