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/03/16 12:22:07 UTC

svn commit: r1787167 - /jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/MultiplexingNodeStore.java

Author: tomekr
Date: Thu Mar 16 12:22:07 2017
New Revision: 1787167

URL: http://svn.apache.org/viewvc?rev=1787167&view=rev
Log:
OAK-5941 Improve the checkpoint release & retrieve for multiplexing node store

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/MultiplexingNodeStore.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/MultiplexingNodeStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/MultiplexingNodeStore.java?rev=1787167&r1=1787166&r2=1787167&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/MultiplexingNodeStore.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/MultiplexingNodeStore.java Thu Mar 16 12:22:07 2017
@@ -250,7 +250,6 @@ public class MultiplexingNodeStore imple
         return ctx.getGlobalStore().getNodeStore().checkpoint(lifetime, globalProperties);
     }
 
-
     @Override
     public String checkpoint(long lifetime) {
         return checkpoint(lifetime, Collections. <String, String> emptyMap());
@@ -275,12 +274,14 @@ public class MultiplexingNodeStore imple
         Map<MountedNodeStore, NodeState> nodeStates = newHashMap();
         nodeStates.put(ctx.getGlobalStore(), ctx.getGlobalStore().getNodeStore().retrieve(checkpoint));
         for (MountedNodeStore nodeStore : ctx.getNonDefaultStores()) {
-            String partialCheckpoint = props.get(CHECKPOINT_ID_PREFIX + nodeStore.getMount().getName());
-            if (partialCheckpoint == null) {
-                return null;
-            } else {
-                nodeStates.put(nodeStore, nodeStore.getNodeStore().retrieve(partialCheckpoint));
+            NodeState nodeState = nodeStore.getNodeStore().retrieve(checkpoint);
+            if (nodeState == null) {
+                String partialCheckpoint = props.get(CHECKPOINT_ID_PREFIX + nodeStore.getMount().getName());
+                if (partialCheckpoint != null) {
+                    nodeState = nodeStore.getNodeStore().retrieve(partialCheckpoint);
+                }
             }
+            nodeStates.put(nodeStore, nodeState);
         }
         if (any(nodeStates.values(), isNull())) {
             return null;
@@ -296,12 +297,14 @@ public class MultiplexingNodeStore imple
         }
         boolean result = ctx.getGlobalStore().getNodeStore().release(checkpoint);
         for (MountedNodeStore nodeStore : ctx.getNonDefaultStores()) {
-            String partialCheckpoint = props.get(CHECKPOINT_ID_PREFIX + nodeStore.getMount().getName());
-            if (partialCheckpoint == null) {
-                result = false;
-            } else {
-                result = nodeStore.getNodeStore().release(partialCheckpoint) && result;
+            boolean released = nodeStore.getNodeStore().release(checkpoint);
+            if (!released) {
+                String partialCheckpoint = props.get(CHECKPOINT_ID_PREFIX + nodeStore.getMount().getName());
+                if (partialCheckpoint != null) {
+                    released = nodeStore.getNodeStore().release(partialCheckpoint);
+                }
             }
+            result &= released;
         }
         return result;
     }