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 mr...@apache.org on 2016/01/18 09:33:59 UTC

svn commit: r1725185 - in /jackrabbit/oak/trunk/oak-core/src: main/java/org/apache/jackrabbit/oak/plugins/document/Collision.java test/java/org/apache/jackrabbit/oak/plugins/document/CollisionWithSplitTest.java

Author: mreutegg
Date: Mon Jan 18 08:33:59 2016
New Revision: 1725185

URL: http://svn.apache.org/viewvc?rev=1725185&view=rev
Log:
OAK-3882: Collision may mark the wrong commit

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/Collision.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/CollisionWithSplitTest.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/Collision.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/Collision.java?rev=1725185&r1=1725184&r2=1725185&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/Collision.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/Collision.java Mon Jan 18 08:33:59 2016
@@ -185,6 +185,18 @@ class Collision {
             // commit state changed meanwhile
             // -> assume revision is now committed
             return false;
+        } else {
+            // check again if revision is still not committed
+            // See OAK-3882
+            if (commitRoot.isCommitted(revision)) {
+                // meanwhile the change was committed and
+                // already moved to a previous document
+                // -> remove collision marker again
+                UpdateOp revert = new UpdateOp(op.getId(), false);
+                NodeDocument.removeCollision(revert, revision);
+                store.findAndUpdate(Collection.NODES, op);
+                return false;
+            }
         }
         // otherwise collision marker was set successfully
         LOG.debug("Marked collision on: {} for {} ({})",

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/CollisionWithSplitTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/CollisionWithSplitTest.java?rev=1725185&r1=1725184&r2=1725185&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/CollisionWithSplitTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/CollisionWithSplitTest.java Mon Jan 18 08:33:59 2016
@@ -29,7 +29,6 @@ import org.apache.jackrabbit.oak.spi.sta
 import org.apache.jackrabbit.oak.spi.state.NodeStore;
 import org.junit.After;
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 
 import static org.apache.jackrabbit.oak.plugins.document.Collection.NODES;
@@ -64,7 +63,6 @@ public class CollisionWithSplitTest exte
         ns2.dispose();
     }
 
-    @Ignore("OAK-3882")
     @Test
     public void collisionAfterSplit() throws Exception {
         final int NUM_NODES = 10;