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 to...@apache.org on 2017/06/08 11:37:55 UTC
svn commit: r1798047 - in
/jackrabbit/oak/trunk/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite:
CompositeNodeStore.java CompositeNodeStoreService.java
Author: tomekr
Date: Thu Jun 8 11:37:55 2017
New Revision: 1798047
URL: http://svn.apache.org/viewvc?rev=1798047&view=rev
Log:
OAK-6320: Allow to disable the read-only mode in composite node store
Modified:
jackrabbit/oak/trunk/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/CompositeNodeStore.java
jackrabbit/oak/trunk/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/CompositeNodeStoreService.java
Modified: jackrabbit/oak/trunk/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/CompositeNodeStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/CompositeNodeStore.java?rev=1798047&r1=1798046&r2=1798047&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/CompositeNodeStore.java (original)
+++ jackrabbit/oak/trunk/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/CompositeNodeStore.java Thu Jun 8 11:37:55 2017
@@ -385,6 +385,8 @@ public class CompositeNodeStore implemen
private final List<String> ignoreReadOnlyWritePaths = Lists.newArrayList();
+ private boolean partialReadOnly = true;
+
public Builder(MountInfoProvider mip, NodeStore globalStore) {
this.mip = checkNotNull(mip, "mountInfoProvider");
this.globalStore = checkNotNull(globalStore, "globalStore");
@@ -404,24 +406,28 @@ public class CompositeNodeStore implemen
return this;
}
+ public Builder setPartialReadOnly(boolean partialReadOnly) {
+ this.partialReadOnly = partialReadOnly;
+ return this;
+ }
+
public CompositeNodeStore build() {
- checkReadWriteMountsNumber();
checkMountsAreConsistentWithMounts();
+ if (partialReadOnly) {
+ assertPartialMountsAreReadOnly();
+ }
return new CompositeNodeStore(mip, globalStore, nonDefaultStores, ignoreReadOnlyWritePaths);
}
- private void checkReadWriteMountsNumber() {
+ public void assertPartialMountsAreReadOnly() {
List<String> readWriteMountNames = Lists.newArrayList();
- if (!mip.getDefaultMount().isReadOnly()) {
- readWriteMountNames.add(mip.getDefaultMount().getName());
- }
for (Mount mount : mip.getNonDefaultMounts()) {
if (!mount.isReadOnly()) {
readWriteMountNames.add(mount.getName());
}
}
- checkArgument(readWriteMountNames.size() <= 1,
- "Expected at most 1 write-enabled mount, but got %s: %s.", readWriteMountNames.size(), readWriteMountNames);
+ checkArgument(readWriteMountNames.isEmpty(),
+ "Following partial mounts are write-enabled: ", readWriteMountNames);
}
private void checkMountsAreConsistentWithMounts() {
Modified: jackrabbit/oak/trunk/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/CompositeNodeStoreService.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/CompositeNodeStoreService.java?rev=1798047&r1=1798046&r2=1798047&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/CompositeNodeStoreService.java (original)
+++ jackrabbit/oak/trunk/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/CompositeNodeStoreService.java Thu Jun 8 11:37:55 2017
@@ -73,6 +73,12 @@ public class CompositeNodeStoreService {
)
private static final String PROP_IGNORE_READ_ONLY_WRITES = "ignoreReadOnlyWrites";
+ @Property(label = "Read-only mounts",
+ description = "The partial stores should be configured as read-only",
+ boolValue = true
+ )
+ private static final String PROP_PARTIAL_READ_ONLY = "partialReadOnly";
+
private ComponentContext context;
private ServiceRegistration nsReg;
@@ -83,10 +89,13 @@ public class CompositeNodeStoreService {
private String[] ignoreReadOnlyWritePaths;
+ private boolean partialReadOnly;
+
@Activate
protected void activate(ComponentContext context, Map<String, ?> config) {
this.context = context;
ignoreReadOnlyWritePaths = PropertiesUtil.toStringArray(config.get(PROP_IGNORE_READ_ONLY_WRITES));
+ partialReadOnly = PropertiesUtil.toBoolean(config.get(PROP_PARTIAL_READ_ONLY), true);
registerCompositeNodeStore();
}
@@ -126,6 +135,7 @@ public class CompositeNodeStoreService {
LOG.info("Node stores for all configured mounts are available");
CompositeNodeStore.Builder builder = new CompositeNodeStore.Builder(mountInfoProvider, globalNs.getNodeStoreProvider().getNodeStore());
+ builder.setPartialReadOnly(partialReadOnly);
for (String p : ignoreReadOnlyWritePaths) {
builder.addIgnoredReadOnlyWritePath(p);
}