Author: tomekr
Date: Thu Mar 30 08:13:41 2017
New Revision: 1789449

URL: http://svn.apache.org/viewvc?rev=1789449&view=rev
Log:
OAK-6006: MultiplexingNodeStore sometimes fails to release checkpoint

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=1789449&r1=1789448&r2=1789449&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 30 08:13:41 2017
@@ -274,7 +274,10 @@ public class MultiplexingNodeStore imple
         Map<MountedNodeStore, NodeState> nodeStates = newHashMap();
         nodeStates.put(ctx.getGlobalStore(), 
ctx.getGlobalStore().getNodeStore().retrieve(checkpoint));
         for (MountedNodeStore nodeStore : ctx.getNonDefaultStores()) {
-            NodeState nodeState = 
nodeStore.getNodeStore().retrieve(checkpoint);
+            NodeState nodeState = null;
+            if 
(!nodeStore.getNodeStore().checkpointInfo(checkpoint).isEmpty()) {
+                nodeState = nodeStore.getNodeStore().retrieve(checkpoint);
+            }
             if (nodeState == null) {
                 String partialCheckpoint = props.get(CHECKPOINT_ID_PREFIX + 
nodeStore.getMount().getName());
                 if (partialCheckpoint != null) {
@@ -297,7 +300,10 @@ public class MultiplexingNodeStore imple
         }
         boolean result = 
ctx.getGlobalStore().getNodeStore().release(checkpoint);
         for (MountedNodeStore nodeStore : ctx.getNonDefaultStores()) {
-            boolean released = nodeStore.getNodeStore().release(checkpoint);
+            boolean released = false;
+            if 
(!nodeStore.getNodeStore().checkpointInfo(checkpoint).isEmpty()) {
+                released = nodeStore.getNodeStore().release(checkpoint);
+            }
             if (!released) {
                 String partialCheckpoint = props.get(CHECKPOINT_ID_PREFIX + 
nodeStore.getMount().getName());
                 if (partialCheckpoint != null) {


Reply via email to