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/02/19 14:39:42 UTC
svn commit: r1447717 - in
/jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/prototype:
Commit.java MongoDocumentStore.java MongoMK.java
Author: thomasm
Date: Tue Feb 19 13:39:41 2013
New Revision: 1447717
URL: http://svn.apache.org/r1447717
Log:
OAK-619 Lock-free MongoMK implementation (WIP)
Modified:
jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/prototype/Commit.java
jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/prototype/MongoDocumentStore.java
jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/prototype/MongoMK.java
Modified: jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/prototype/Commit.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/prototype/Commit.java?rev=1447717&r1=1447716&r2=1447717&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/prototype/Commit.java (original)
+++ jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/prototype/Commit.java Tue Feb 19 13:39:41 2013
@@ -76,6 +76,7 @@ public class Commit {
ArrayList<UpdateOp> newNodes = new ArrayList<UpdateOp>();
ArrayList<UpdateOp> changedNodes = new ArrayList<UpdateOp>();
for (String p : operations.keySet()) {
+ addChangedParent(p);
if (commitRoot == null) {
commitRoot = p;
} else {
@@ -87,7 +88,6 @@ public class Commit {
}
}
}
- addChangedParent(commitRoot);
// create a "root of the commit" if there is none
UpdateOp root = getUpdateOperationForNode(commitRoot);
for (String p : operations.keySet()) {
@@ -100,16 +100,19 @@ public class Commit {
changedNodes.add(op);
}
}
- if (changedNodes.size() == 0) {
+ if (changedNodes.size() == 0 && root.isNew) {
// no updates, so we just add the root like the others
newNodes.add(root);
root = null;
}
- store.create(Collection.NODES, newNodes);
+ if (newNodes.size() > 0) {
+ store.create(Collection.NODES, newNodes);
+ }
for (UpdateOp op : changedNodes) {
store.createOrUpdate(Collection.NODES, op);
}
if (root != null) {
+ root.addMapEntry("_revisions", revision.toString(), "true");
store.createOrUpdate(Collection.NODES, root);
}
}
Modified: jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/prototype/MongoDocumentStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/prototype/MongoDocumentStore.java?rev=1447717&r1=1447716&r2=1447717&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/prototype/MongoDocumentStore.java (original)
+++ jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/prototype/MongoDocumentStore.java Tue Feb 19 13:39:41 2013
@@ -21,6 +21,7 @@ import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
+import org.apache.jackrabbit.mk.api.MicroKernelException;
import org.apache.jackrabbit.mongomk.prototype.UpdateOp.Operation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -127,10 +128,14 @@ public class MongoDocumentStore implemen
// WriteConcern.SAFE);
// return null;
- DBObject oldNode = dbCollection.findAndModify(query, null /*fields*/,
- null /*sort*/, false /*remove*/, update, false /*returnNew*/,
- true /*upsert*/);
- return convertFromDBObject(oldNode);
+ try {
+ DBObject oldNode = dbCollection.findAndModify(query, null /*fields*/,
+ null /*sort*/, false /*remove*/, update, false /*returnNew*/,
+ true /*upsert*/);
+ return convertFromDBObject(oldNode);
+ } catch (Exception e) {
+ throw new MicroKernelException(e);
+ }
}
@Override
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=1447717&r1=1447716&r2=1447717&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 Tue Feb 19 13:39:41 2013
@@ -346,9 +346,9 @@ public class MongoMK implements MicroKer
json.key(":childNodeCount").value(c.children.size());
json.endObject();
String result = json.toString();
- if (filter != null && filter.contains(":hash")) {
- result = result.replaceAll("\":id\"", "\":hash\"");
- }
+ // if (filter != null && filter.contains(":hash")) {
+ // result = result.replaceAll("\":id\"", "\":hash\"");
+ // }
return result;
}