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 2013/04/16 10:45:43 UTC
svn commit: r1468327 - in /jackrabbit/oak/trunk/oak-mongomk/src:
main/java/org/apache/jackrabbit/mongomk/Commit.java
test/java/org/apache/jackrabbit/mongomk/ConflictTest.java
Author: mreutegg
Date: Tue Apr 16 08:45:43 2013
New Revision: 1468327
URL: http://svn.apache.org/r1468327
Log:
OAK-619 Lock-free MongoMK implementation
- Improved conflict handling
Modified:
jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/Commit.java
jackrabbit/oak/trunk/oak-mongomk/src/test/java/org/apache/jackrabbit/mongomk/ConflictTest.java
Modified: jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/Commit.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/Commit.java?rev=1468327&r1=1468326&r2=1468327&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/Commit.java (original)
+++ jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/Commit.java Tue Apr 16 08:45:43 2013
@@ -273,10 +273,9 @@ public class Commit {
newestRev + "; before " + revision + "; document " + map);
}
if (mk.isRevisionNewer(newestRev, baseRevision)
- && isConflicting(map, op)) {
+ && (op.isDelete || isConflicting(map, op))) {
throw new MicroKernelException("The node " +
- op.path + " was changed in revision " +
- newestRev +
+ op.path + " was changed in revision " + newestRev +
", which was applied after the base revision " +
baseRevision + "; before " + revision + "; document " + map);
}
Modified: jackrabbit/oak/trunk/oak-mongomk/src/test/java/org/apache/jackrabbit/mongomk/ConflictTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-mongomk/src/test/java/org/apache/jackrabbit/mongomk/ConflictTest.java?rev=1468327&r1=1468326&r2=1468327&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-mongomk/src/test/java/org/apache/jackrabbit/mongomk/ConflictTest.java (original)
+++ jackrabbit/oak/trunk/oak-mongomk/src/test/java/org/apache/jackrabbit/mongomk/ConflictTest.java Tue Apr 16 08:45:43 2013
@@ -17,7 +17,6 @@
package org.apache.jackrabbit.mongomk;
import org.apache.jackrabbit.mk.api.MicroKernelException;
-import org.junit.Ignore;
import org.junit.Test;
import static org.junit.Assert.fail;
@@ -120,7 +119,6 @@ public class ConflictTest extends BaseMo
}
@Test
- @Ignore
public void removeChangedNode() {
String rev = mk.commit("/", "+\"foo\":{}", null, null);
mk.commit("/foo", "^\"prop\":\"value\"", rev, null);
@@ -145,4 +143,25 @@ public class ConflictTest extends BaseMo
// expected
}
}
+
+ @Test
+ public void nonConflictingChangeProperty() {
+ String rev = mk.commit("/", "+\"foo\":{\"prop1\":\"value\", \"prop2\":\"value\"}", null, null);
+ mk.commit("/foo", "^\"prop1\":\"bar\"", rev, null);
+ mk.commit("/foo", "^\"prop2\":\"baz\"", rev, null);
+ }
+
+ @Test
+ public void nonConflictingAddProperty() {
+ String rev = mk.commit("/", "+\"foo\":{\"prop1\":\"value\"}", null, null);
+ mk.commit("/foo", "^\"prop1\":\"bar\"", rev, null);
+ mk.commit("/foo", "^\"prop2\":\"baz\"", rev, null);
+ }
+
+ @Test
+ public void nonConflictingRemoveProperty() {
+ String rev = mk.commit("/", "+\"foo\":{\"prop1\":\"value\", \"prop2\":\"value\"}", null, null);
+ mk.commit("/foo", "^\"prop1\":\"bar\"", rev, null);
+ mk.commit("/foo", "^\"prop2\":null", rev, null);
+ }
}