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:36:12 UTC

(jackrabbit-oak) branch 1.22 updated: Merge pull request #1894 from t-rana/issues/OAK-11266 (#1996)

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 4e7c128b78 Merge pull request #1894 from t-rana/issues/OAK-11266 (#1996)
4e7c128b78 is described below

commit 4e7c128b784197ea92567edd699716359e4567ed
Author: Rishabh Kumar <ri...@gmail.com>
AuthorDate: Mon Jan 20 08:06:08 2025 +0530

    Merge pull request #1894 from t-rana/issues/OAK-11266 (#1996)
    
    OAK-11266 : Create a new mode GCP for Blob cloud
---
 .../jackrabbit/oak/blob/cloud/s3/S3Backend.java    | 22 ++++++++++++++++++++++
 .../jackrabbit/oak/blob/cloud/s3/S3Constants.java  |  5 +++++
 .../oak/blob/cloud/s3/TestS3DataStore.java         |  2 +-
 3 files changed, 28 insertions(+), 1 deletion(-)

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 7db96e16da..cad6a37ea1 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
@@ -496,6 +496,20 @@ public class S3Backend extends AbstractSharedBackend {
      */
     public void setProperties(Properties properties) {
         this.properties = properties;
+        setRemoteStorageMode();
+    }
+
+    private void setRemoteStorageMode() {
+        String s3EndPoint = properties.getProperty(S3Constants.S3_END_POINT, "");
+        if (s3EndPoint.contains("googleapis")) {
+            if (properties.get(S3Constants.MODE) == RemoteStorageMode.S3) {
+                LOG.warn("Mismatch between remote storage mode and s3EndPoint, overriding mode to GCP");
+            }
+            properties.put(S3Constants.MODE, RemoteStorageMode.GCP);
+            return;
+        }
+        // default mode is S3
+        properties.put(S3Constants.MODE, RemoteStorageMode.S3);
     }
 
     @Override
@@ -1367,4 +1381,12 @@ public class S3Backend extends AbstractSharedBackend {
             this.oldKey = oldKey;
         }
     }
+
+    /**
+     * Enum to indicate remote storage mode
+     */
+    private enum RemoteStorageMode {
+        S3,
+        GCP
+    }
 }
diff --git a/oak-blob-cloud/src/main/java/org/apache/jackrabbit/oak/blob/cloud/s3/S3Constants.java b/oak-blob-cloud/src/main/java/org/apache/jackrabbit/oak/blob/cloud/s3/S3Constants.java
index 3852e35b2f..e77b4bd7f2 100644
--- a/oak-blob-cloud/src/main/java/org/apache/jackrabbit/oak/blob/cloud/s3/S3Constants.java
+++ b/oak-blob-cloud/src/main/java/org/apache/jackrabbit/oak/blob/cloud/s3/S3Constants.java
@@ -144,6 +144,11 @@ public final class S3Constants {
      */
     public static final String PROXY_PORT = "proxyPort";
 
+    /**
+     * Constant to set remote storage mode
+     */
+    public static final String MODE = "mode";
+
     public static final String PRESIGNED_HTTP_UPLOAD_URI_EXPIRY_SECONDS = "presignedHttpUploadURIExpirySeconds";
 
     public static final String PRESIGNED_HTTP_DOWNLOAD_URI_EXPIRY_SECONDS = "presignedHttpDownloadURIExpirySeconds";
diff --git a/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/TestS3DataStore.java b/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/TestS3DataStore.java
index b6b54d88b9..6d8fb9b0de 100644
--- a/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/TestS3DataStore.java
+++ b/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/TestS3DataStore.java
@@ -105,7 +105,7 @@ public class TestS3DataStore {
     @Test
     public void testAccessParamLeakOnError() throws Exception {
         expectedEx.expect(RepositoryException.class);
-        expectedEx.expectMessage("Could not initialize S3 from {s3Region=us-standard, intValueKey=25}");
+        expectedEx.expectMessage("Could not initialize S3 from {mode=S3, s3Region=us-standard, intValueKey=25}");
 
         props.put(S3Constants.ACCESS_KEY, "abcd");
         props.put(S3Constants.SECRET_KEY, "123456");