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:46:43 UTC
(jackrabbit-oak) branch 1.22 updated: Merge pull request #1902 from t-rana/issues/OAK-11306 (#2000)
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 <ri...@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);