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/09/19 08:52:04 UTC
svn commit: r1841301 - in /jackrabbit/oak/trunk/oak-segment-tar/src:
main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreRegistrar.java
test/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreServiceTest.java
Author: amitj
Date: Wed Sep 19 08:52:03 2018
New Revision: 1841301
URL: http://svn.apache.org/viewvc?rev=1841301&view=rev
Log:
OAK-7766: RepositoryId not registered in the DataStore with SegmentNodeStoreFactory
- Fixed condition to check not secondary role configured & customBlobStore=true
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreRegistrar.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/SegmentNodeStoreRegistrar.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreRegistrar.java?rev=1841301&r1=1841300&r2=1841301&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreRegistrar.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreRegistrar.java Wed Sep 19 08:52:03 2018
@@ -396,7 +396,7 @@ class SegmentNodeStoreRegistrar {
}
// If a shared data store register the repo id in the data store
- if (cfg.isPrimarySegmentStore() && isShared(cfg.getBlobStore())) {
+ if (!cfg.isSecondarySegmentStore() && cfg.hasCustomBlobStore() && isShared(cfg.getBlobStore())) {
SharedDataStore sharedDataStore = (SharedDataStore) cfg.getBlobStore();
try {
sharedDataStore.addMetadataRecord(new ByteArrayInputStream(new byte[0]), SharedDataStoreUtils.SharedStoreRecordType.REPOSITORY.getNameFromId(getOrCreateId(segmentNodeStore)));
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=1841301&r1=1841300&r2=1841301&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 Sep 19 08:52:03 2018
@@ -21,14 +21,22 @@ package org.apache.jackrabbit.oak.segmen
import static com.google.common.collect.Maps.newHashMap;
import static org.apache.sling.testing.mock.osgi.MockOsgi.deactivate;
+import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.mock;
import java.io.File;
+import java.io.IOException;
+import java.util.List;
import java.util.Map;
+import org.apache.jackrabbit.core.data.DataRecord;
import org.apache.jackrabbit.oak.plugins.blob.BlobGCMBean;
+import org.apache.jackrabbit.oak.plugins.blob.datastore.DataStoreBlobStore;
+import org.apache.jackrabbit.oak.plugins.blob.datastore.OakFileDataStore;
+import org.apache.jackrabbit.oak.plugins.blob.datastore.SharedDataStoreUtils;
import org.apache.jackrabbit.oak.spi.blob.BlobStore;
import org.apache.jackrabbit.oak.spi.blob.GarbageCollectableBlobStore;
import org.apache.jackrabbit.oak.spi.state.NodeStore;
@@ -143,6 +151,42 @@ public class SegmentNodeStoreServiceTest
unregisterSegmentNodeStoreService();
}
+ /**
+ * A SharedDataStore service should be registered when the "customBlobStore"
+ * configuration property is true and a BlobStore service as SharedDataStore available.
+ */
+ @Test
+ public void testUseCustomBlobStoreWithSharedBlobStore() throws IOException {
+ DataStoreBlobStore dataStoreBlobStore = registerSharedDataStore(folder.newFolder());
+
+ registerSegmentNodeStoreService(true);
+ assertServiceActivated();
+
+ assertNotNull(context.getService(BlobGCMBean.class));
+ assertSharedDataStoreRegistered(dataStoreBlobStore);
+
+ unregisterSegmentNodeStoreService();
+ unregisterBlobStore();
+ }
+
+ /**
+ * A SharedDataStore service should not be registered when the "customBlobStore"
+ * configuration property is false and a BlobStore service as SharedDataStore available.
+ */
+ @Test
+ public void testUseNoCustomBlobStoreWithSharedBlobStore() throws IOException {
+ DataStoreBlobStore dataStoreBlobStore = registerSharedDataStore(folder.newFolder());
+
+ registerSegmentNodeStoreService(false);
+ assertServiceActivated();
+
+ assertNull(context.getService(BlobGCMBean.class));
+ assertSharedDataStoreNotRegistered(dataStoreBlobStore);
+
+ unregisterSegmentNodeStoreService();
+ unregisterBlobStore();
+ }
+
private SegmentNodeStoreService segmentNodeStoreService;
protected void registerSegmentNodeStoreService(boolean customBlobStore) {
@@ -164,6 +208,15 @@ public class SegmentNodeStoreServiceTest
blobStore = context.bundleContext().registerService(BlobStore.class.getName(), mock(GarbageCollectableBlobStore.class), null);
}
+ private DataStoreBlobStore registerSharedDataStore(File home) {
+ OakFileDataStore ds = new OakFileDataStore();
+ ds.init(home.getAbsolutePath());
+ DataStoreBlobStore dataStoreBlobStore = new DataStoreBlobStore(ds);
+
+ blobStore = context.bundleContext().registerService(BlobStore.class.getName(), dataStoreBlobStore, null);
+ return dataStoreBlobStore;
+ }
+
private void unregisterBlobStore() {
blobStore.unregister();
}
@@ -178,4 +231,15 @@ public class SegmentNodeStoreServiceTest
assertNull(context.getService(SegmentStoreProvider.class));
}
+ protected void assertSharedDataStoreRegistered(DataStoreBlobStore dataStoreBlobStore) {
+ List<DataRecord> allMetadataRecords =
+ dataStoreBlobStore.getAllMetadataRecords(SharedDataStoreUtils.SharedStoreRecordType.REPOSITORY.getType());
+ assertFalse(allMetadataRecords.isEmpty());
+ }
+
+ protected void assertSharedDataStoreNotRegistered(DataStoreBlobStore dataStoreBlobStore) {
+ List<DataRecord> allMetadataRecords =
+ dataStoreBlobStore.getAllMetadataRecords(SharedDataStoreUtils.SharedStoreRecordType.REPOSITORY.getType());
+ assertTrue(allMetadataRecords.isEmpty());
+ }
}