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/30 08:13:41 UTC
svn commit: r1789449 -
/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/MultiplexingNodeStore.java
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) {