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 th...@apache.org on 2013/03/20 16:02:06 UTC
svn commit: r1458866 - in /jackrabbit/oak/trunk/oak-mongomk/src:
main/java/org/apache/jackrabbit/mongomk/prototype/MongoMK.java
test/java/org/apache/jackrabbit/mongomk/prototype/SimpleTest.java
Author: thomasm
Date: Wed Mar 20 15:02:05 2013
New Revision: 1458866
URL: http://svn.apache.org/r1458866
Log:
OAK-619 Lock-free MongoMK implementation (support diff)
Modified:
jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/prototype/MongoMK.java
jackrabbit/oak/trunk/oak-mongomk/src/test/java/org/apache/jackrabbit/mongomk/prototype/SimpleTest.java
Modified: jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/prototype/MongoMK.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/prototype/MongoMK.java?rev=1458866&r1=1458865&r2=1458866&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/prototype/MongoMK.java (original)
+++ jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/prototype/MongoMK.java Wed Mar 20 15:02:05 2013
@@ -482,10 +482,6 @@ public class MongoMK implements MicroKer
if (fromRevisionId.equals(toRevisionId)) {
return "";
}
- // TODO implement if needed
- if (true) {
- return "{}";
- }
if (depth != 0) {
throw new MicroKernelException("Only depth 0 is supported, depth is " + depth);
}
@@ -525,7 +521,11 @@ public class MongoMK implements MicroKer
} else {
Node n1 = getNode(n, fromRev);
Node n2 = getNode(n, toRev);
- if (!n1.equals(n2)) {
+ // this is not fully correct:
+ // a change is detected if the node changed recently,
+ // even if the revisions are well in the past
+ // if this is a problem it would need to be changed
+ if (!n1.getId().equals(n2.getId())) {
w.tag('^').key(n).object().endObject().newline();
}
}
Modified: jackrabbit/oak/trunk/oak-mongomk/src/test/java/org/apache/jackrabbit/mongomk/prototype/SimpleTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-mongomk/src/test/java/org/apache/jackrabbit/mongomk/prototype/SimpleTest.java?rev=1458866&r1=1458865&r2=1458866&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-mongomk/src/test/java/org/apache/jackrabbit/mongomk/prototype/SimpleTest.java (original)
+++ jackrabbit/oak/trunk/oak-mongomk/src/test/java/org/apache/jackrabbit/mongomk/prototype/SimpleTest.java Wed Mar 20 15:02:05 2013
@@ -129,7 +129,6 @@ public class SimpleTest {
}
@Test
- @Ignore
public void diff() {
MongoMK mk = createMK();
@@ -137,7 +136,7 @@ public class SimpleTest {
String rev1 = mk.commit("/", "+\"t1\":{}", null, null);
String rev2 = mk.commit("/", "+\"t2\":{}", null, null);
String rev3 = mk.commit("/", "+\"t3\":{}", null, null);
- String rev4 = mk.commit("/", "^\"t2/x\":1", null, null);
+ String rev4 = mk.commit("/", "^\"t3/x\":1", null, null);
String r0 = mk.getNodes("/", rev0, 0, 0, Integer.MAX_VALUE, null);
assertEquals("{\":childNodeCount\":0}", r0);
@@ -157,7 +156,7 @@ public class SimpleTest {
String diff13 = mk.diff(rev1, rev3, "/", 0).trim();
assertEquals("+\"/t2\":{}\n+\"/t3\":{}", diff13);
String diff34 = mk.diff(rev3, rev4, "/", 0).trim();
- assertEquals("^\"/t2\":{}", diff34);
+ assertEquals("^\"/t3\":{}", diff34);
mk.dispose();
}
@@ -248,57 +247,6 @@ public class SimpleTest {
// System.out.println(test);
mk.dispose();
}
-
- @Test
- public void cache() {
- MongoMK mk = createMK();
-
- // BAD
- String rev = mk.commit("/", "+\"testRoot\":{} +\"index\":{}", null, null);
-
- // GOOD
-// String rev = mk.commit("/", "+\"testRoot\":{} ", null, null);
-
- String test = mk.getNodes("/", rev, 0, 0, Integer.MAX_VALUE, ":id");
- // System.out.println(" " + test);
-// test = mk.getNodes("/testRoot", rev, 0, 0, Integer.MAX_VALUE, ":id");
-// System.out.println(" " + test);
- rev = mk.commit("/testRoot", "+\"a\":{}", null, null);
-// test = mk.getNodes("/testRoot", rev, 0, 0, Integer.MAX_VALUE, ":id");
-// System.out.println(" " + test);
-// rev = mk.commit("/testRoot/a", "+\"b\":{}", null, null);
-// rev = mk.commit("/testRoot/a/b", "+\"c\":{} +\"d\":{}", null, null);
-// test = mk.getNodes("/testRoot", rev, 0, 0, Integer.MAX_VALUE, ":id");
-// System.out.println(" " + test);
-// test = mk.getNodes("/", rev, 0, 0, Integer.MAX_VALUE, ":id");
-// System.out.println(" " + test);
-// rev = mk.commit("/index", "+\"a\":{}", null, null);
- test = mk.getNodes("/", rev, 0, 0, Integer.MAX_VALUE, ":id");
- // System.out.println(" " + test);
-// test = mk.getNodes("/testRoot", rev, 0, 0, Integer.MAX_VALUE, ":id");
-// System.out.println(" " + test);
-
-// assertEquals("{\"name\":\"Hello\",\":childNodeCount\":0}", test);
-//
-// rev = mk.commit("/test", "+\"a\":{\"name\": \"World\"}", null, null);
-// rev = mk.commit("/test", "+\"b\":{\"name\": \"!\"}", null, null);
-// test = mk.getNodes("/test", rev, 0, 0, Integer.MAX_VALUE, null);
-// Children c;
-// c = mk.readChildren("/", "1",
-// Revision.fromString(rev), Integer.MAX_VALUE);
-// assertEquals("/: [/test]", c.toString());
-// c = mk.readChildren("/test", "2",
-// Revision.fromString(rev), Integer.MAX_VALUE);
-// assertEquals("/test: [/test/a, /test/b]", c.toString());
-//
-// rev = mk.commit("", "^\"/test\":1", null, null);
-// test = mk.getNodes("/", rev, 0, 0, Integer.MAX_VALUE, null);
-// assertEquals("{\"test\":1,\"test\":{},\":childNodeCount\":1}", test);
-
- // System.out.println(test);
- mk.dispose();
- }
-
@Test
public void testDeletion() {
@@ -352,31 +300,31 @@ public class SimpleTest {
// root node must not have the revision
Map<String, Object> rootNode = store.find(Collection.NODES, "0:/");
- assertFalse(((Map) rootNode.get(UpdateOp.REVISIONS)).containsKey(head));
+ assertFalse(((Map<?, ?>) rootNode.get(UpdateOp.REVISIONS)).containsKey(head));
// test node must have head in revisions
Map<String, Object> node = store.find(Collection.NODES, "1:/test");
- assertTrue(((Map) node.get(UpdateOp.REVISIONS)).containsKey(head));
+ assertTrue(((Map<?, ?>) node.get(UpdateOp.REVISIONS)).containsKey(head));
// foo must not have head in revisions and must refer to test
// as commit root (depth = 1)
Map<String, Object> foo = store.find(Collection.NODES, "2:/test/foo");
assertTrue(foo.get(UpdateOp.REVISIONS) == null);
- assertEquals(1, ((Map) foo.get(UpdateOp.COMMIT_ROOT)).get(head));
+ assertEquals(1, ((Map<?, ?>) foo.get(UpdateOp.COMMIT_ROOT)).get(head));
head = mk.commit("", "+\"/bar\":{}+\"/test/foo/bar\":{}", head, null);
// root node is root of commit
rootNode = store.find(Collection.NODES, "0:/");
- assertTrue(((Map) rootNode.get(UpdateOp.REVISIONS)).containsKey(head));
+ assertTrue(((Map<?, ?>) rootNode.get(UpdateOp.REVISIONS)).containsKey(head));
// /bar refers to root nodes a commit root
Map<String, Object> bar = store.find(Collection.NODES, "1:/bar");
- assertEquals(0, ((Map) bar.get(UpdateOp.COMMIT_ROOT)).get(head));
+ assertEquals(0, ((Map<?, ?>) bar.get(UpdateOp.COMMIT_ROOT)).get(head));
// /test/foo/bar refers to root nodes a commit root
bar = store.find(Collection.NODES, "3:/test/foo/bar");
- assertEquals(0, ((Map) bar.get(UpdateOp.COMMIT_ROOT)).get(head));
+ assertEquals(0, ((Map<?, ?>) bar.get(UpdateOp.COMMIT_ROOT)).get(head));
} finally {
mk.dispose();