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 2014/02/25 13:28:43 UTC

svn commit: r1571665 - in /jackrabbit/oak/trunk/oak-core/src: main/java/org/apache/jackrabbit/oak/plugins/document/Commit.java test/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreTest.java

Author: mreutegg
Date: Tue Feb 25 12:28:42 2014
New Revision: 1571665

URL: http://svn.apache.org/r1571665
Log:
OAK-1467: Commit.rollback() may remove changes from other commit

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

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/Commit.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/Commit.java?rev=1571665&r1=1571664&r2=1571665&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/Commit.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/Commit.java Tue Feb 25 12:28:42 2014
@@ -408,7 +408,9 @@ public class Commit {
             store.createOrUpdate(NODES, reverse);
         }
         for (UpdateOp op : newDocuments) {
-            store.remove(NODES, op.id);
+            UpdateOp reverse = op.getReverseOperation();
+            NodeDocument.unsetLastRev(reverse, revision.getClusterId());
+            store.createOrUpdate(NODES, reverse);
         }
         UpdateOp removeCollision = new UpdateOp(commitRoot.getId(), false);
         NodeDocument.removeCollision(removeCollision, revision);

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreTest.java?rev=1571665&r1=1571664&r2=1571665&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreTest.java Tue Feb 25 12:28:42 2014
@@ -172,7 +172,6 @@ public class DocumentNodeStoreTest {
         store.dispose();
     }
 
-    @Ignore("OAK-1467")
     @Test
     public void rollback() throws Exception {
         final Map<Thread, Semaphore> locks = Collections.synchronizedMap(
@@ -230,9 +229,11 @@ public class DocumentNodeStoreTest {
         String id = Utils.getIdFromPath("/foo/node");
         NodeDocument doc = docStore.find(Collection.NODES, id);
         assertNotNull("document with id " + id + " does not exist", doc);
+        assertTrue(!doc.getLastRev().isEmpty());
         id = Utils.getIdFromPath("/bar/node");
         doc = docStore.find(Collection.NODES, id);
         assertNotNull("document with id " + id + " does not exist", doc);
+        assertTrue(!doc.getLastRev().isEmpty());
 
         mk.dispose();
     }