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 am...@apache.org on 2018/07/27 07:28:02 UTC

svn commit: r1836781 - in /jackrabbit/oak/trunk: oak-it/src/test/java/org/apache/jackrabbit/oak/plugins/blob/ClusterRepositoryInfoTest.java oak-store-spi/src/main/java/org/apache/jackrabbit/oak/spi/cluster/ClusterRepositoryInfo.java

Author: amitj
Date: Fri Jul 27 07:28:02 2018
New Revision: 1836781

URL: http://svn.apache.org/viewvc?rev=1836781&view=rev
Log:
OAK-7664: Add a get method to ClusterRepositoryInfo for read only cases

Added get() to retrieve only the already set cluster id or null

Modified:
    jackrabbit/oak/trunk/oak-it/src/test/java/org/apache/jackrabbit/oak/plugins/blob/ClusterRepositoryInfoTest.java
    jackrabbit/oak/trunk/oak-store-spi/src/main/java/org/apache/jackrabbit/oak/spi/cluster/ClusterRepositoryInfo.java

Modified: jackrabbit/oak/trunk/oak-it/src/test/java/org/apache/jackrabbit/oak/plugins/blob/ClusterRepositoryInfoTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-it/src/test/java/org/apache/jackrabbit/oak/plugins/blob/ClusterRepositoryInfoTest.java?rev=1836781&r1=1836780&r2=1836781&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-it/src/test/java/org/apache/jackrabbit/oak/plugins/blob/ClusterRepositoryInfoTest.java (original)
+++ jackrabbit/oak/trunk/oak-it/src/test/java/org/apache/jackrabbit/oak/plugins/blob/ClusterRepositoryInfoTest.java Fri Jul 27 07:28:02 2018
@@ -35,12 +35,12 @@ import org.apache.jackrabbit.oak.spi.sta
 import org.apache.jackrabbit.oak.spi.state.NodeState;
 import org.apache.jackrabbit.oak.spi.state.NodeStore;
 import org.junit.After;
+import org.junit.Assert;
 import org.junit.Assume;
 import org.junit.BeforeClass;
 import org.junit.Rule;
 import org.junit.Test;
 
-import junit.framework.Assert;
 
 /**
  * Tests the ClusterRepositoryInfo unique cluster repository id.
@@ -167,6 +167,35 @@ public class ClusterRepositoryInfoTest {
         Assert.assertEquals(id, "xxxxxxxx");
     }
 
+    @Test
+    public void getId() {
+        MemoryDocumentStore store = new MemoryDocumentStore();
+        DocumentNodeStore ds1 = builderProvider.newBuilder()
+            .setAsyncDelay(0)
+            .setDocumentStore(store)
+            .setClusterId(1)
+            .getNodeStore();
+        String repoId1 = ClusterRepositoryInfo.getOrCreateId(ds1);
+        ds1.runBackgroundOperations();
+
+        String retrievedId = ClusterRepositoryInfo.getId(ds1);
+        Assert.assertNotNull(retrievedId);
+        Assert.assertEquals(repoId1, retrievedId);
+    }
+
+    @Test
+    public void getIdNotSet() {
+        MemoryDocumentStore store = new MemoryDocumentStore();
+        DocumentNodeStore ds1 = builderProvider.newBuilder()
+            .setAsyncDelay(0)
+            .setDocumentStore(store)
+            .setClusterId(1)
+            .getNodeStore();
+        ds1.runBackgroundOperations();
+
+        String retrievedId = ClusterRepositoryInfo.getId(ds1);
+        Assert.assertNull(retrievedId);
+    }
 
     @After
     public void close() throws IOException {

Modified: jackrabbit/oak/trunk/oak-store-spi/src/main/java/org/apache/jackrabbit/oak/spi/cluster/ClusterRepositoryInfo.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-spi/src/main/java/org/apache/jackrabbit/oak/spi/cluster/ClusterRepositoryInfo.java?rev=1836781&r1=1836780&r2=1836781&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-store-spi/src/main/java/org/apache/jackrabbit/oak/spi/cluster/ClusterRepositoryInfo.java (original)
+++ jackrabbit/oak/trunk/oak-store-spi/src/main/java/org/apache/jackrabbit/oak/spi/cluster/ClusterRepositoryInfo.java Fri Jul 27 07:28:02 2018
@@ -104,5 +104,18 @@ public class ClusterRepositoryInfo {
         }
     }
 
+    @Nullable
+    public static String getId(@NotNull NodeStore store) {
+        checkNotNull(store, "store is null");
+
+        // first try to read an existing clusterId
+        NodeState root = store.getRoot();
+        NodeState node = root.getChildNode(CLUSTER_CONFIG_NODE);
+        if (node.exists() && node.hasProperty(CLUSTER_ID_PROP)) {
+            return node.getProperty(CLUSTER_ID_PROP).getValue(Type.STRING);
+        }
+        return null;
+    }
+
 }