Author: chetanm
Date: Wed Jun 29 06:26:52 2016
New Revision: 1750604

URL: http://svn.apache.org/viewvc?rev=1750604&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/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeStoreService.java
    
jackrabbit/oak/trunk/oak-segment/src/test/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeStoreServiceTest.java

Modified: 
jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeStoreService.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeStoreService.java?rev=1750604&r1=1750603&r2=1750604&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeStoreService.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeStoreService.java
 Wed Jun 29 06:26:52 2016
@@ -314,7 +314,8 @@ 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");
@@ -359,7 +360,7 @@ public class SegmentNodeStoreService ext
                 return;
             }
 
-            if (toBoolean(property(SECONDARY_STORE), false)){
+            if (isSecondaryStoreMode()){
                 registerSecondaryStore();
                 return;
             }
@@ -373,6 +374,10 @@ public class SegmentNodeStoreService ext
         }
     }
 
+    private boolean isSecondaryStoreMode() {
+        return toBoolean(property(SECONDARY_STORE), false);
+    }
+
     private void registerSecondaryStore() {
         SegmentNodeStore.SegmentNodeStoreBuilder nodeStoreBuilder = 
SegmentNodeStore.builder(store);
         nodeStoreBuilder.withCompactionStrategy(compactionStrategy);

Modified: 
jackrabbit/oak/trunk/oak-segment/src/test/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeStoreServiceTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment/src/test/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeStoreServiceTest.java?rev=1750604&r1=1750603&r2=1750604&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment/src/test/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeStoreServiceTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment/src/test/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeStoreServiceTest.java
 Wed Jun 29 06:26:52 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));



Reply via email to