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 ch...@apache.org on 2016/06/29 06:27:03 UTC

svn commit: r1750605 - in /jackrabbit/oak/trunk/oak-segment-tar/src: main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreService.java test/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreServiceTest.java

Author: chetanm
Date: Wed Jun 29 06:27:03 2016
New Revision: 1750605

URL: http://svn.apache.org/viewvc?rev=1750605&view=rev
Log:
OAK-4490 - Expose SegmentNodeStore as a secondary NodeStore

With secondary mode enabled customBlobStore is assumed to be true as in that mode segment store is only supposed to keep node data and not blob data. So it should alway depend on external BlobStore

Modified:
    jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreService.java
    jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreServiceTest.java

Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreService.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreService.java?rev=1750605&r1=1750604&r2=1750605&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreService.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreService.java Wed Jun 29 06:27:03 2016
@@ -271,7 +271,9 @@ public class SegmentNodeStoreService ext
     @Activate
     public void activate(ComponentContext context) throws IOException {
         this.context = context;
-        this.customBlobStore = Boolean.parseBoolean(property(CUSTOM_BLOB_STORE));
+
+        //In secondaryNodeStore mode customBlobStore is always enabled
+        this.customBlobStore = Boolean.parseBoolean(property(CUSTOM_BLOB_STORE)) || isSecondaryStoreMode();
 
         if (blobStore == null && customBlobStore) {
             log.info("BlobStore use enabled. SegmentNodeStore would be initialized when BlobStore would be available");
@@ -316,7 +318,7 @@ public class SegmentNodeStoreService ext
                 return;
             }
 
-            if (toBoolean(property(SECONDARY_STORE), false)){
+            if (isSecondaryStoreMode()){
                 registerSecondaryStore();
                 return;
             }
@@ -330,6 +332,10 @@ public class SegmentNodeStoreService ext
         }
     }
 
+    private boolean isSecondaryStoreMode() {
+        return toBoolean(property(SECONDARY_STORE), false);
+    }
+
     private void registerSecondaryStore() {
         segmentNodeStore = SegmentNodeStoreBuilders.builder(store).build();
         Dictionary<String, Object> props = new Hashtable<String, Object>();

Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreServiceTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreServiceTest.java?rev=1750605&r1=1750604&r2=1750605&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreServiceTest.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreServiceTest.java Wed Jun 29 06:27:03 2016
@@ -29,6 +29,7 @@ import java.io.File;
 import java.util.Map;
 
 import org.apache.jackrabbit.oak.spi.blob.BlobStore;
+import org.apache.jackrabbit.oak.spi.blob.MemoryBlobStore;
 import org.apache.jackrabbit.oak.spi.state.NodeStore;
 import org.apache.jackrabbit.oak.spi.state.NodeStoreProvider;
 import org.apache.jackrabbit.oak.stats.StatisticsProvider;
@@ -146,6 +147,7 @@ public class SegmentNodeStoreServiceTest
         Map<String, Object> properties = newHashMap();
         properties.put(SegmentNodeStoreService.SECONDARY_STORE, true);
         properties.put(SegmentNodeStoreService.DIRECTORY, folder.getRoot().getAbsolutePath());
+        context.registerService(BlobStore.class, new MemoryBlobStore());
 
         segmentNodeStoreService = context.registerInjectActivateService(new SegmentNodeStoreService(), properties);
         assertNull(context.getService(NodeStore.class));