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/26 17:35:56 UTC

svn commit: r1450265 - in /jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/prototype: MongoDocumentStore.java Node.java

Author: thomasm
Date: Tue Feb 26 16:35:55 2013
New Revision: 1450265

URL: http://svn.apache.org/r1450265
Log:
OAK-619 Lock-free MongoMK implementation (fix simple bugs)

Modified:
    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/Node.java

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=1450265&r1=1450264&r2=1450265&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 26 16:35:55 2013
@@ -31,6 +31,7 @@ import com.mongodb.DB;
 import com.mongodb.DBCollection;
 import com.mongodb.DBCursor;
 import com.mongodb.DBObject;
+import com.mongodb.MongoException;
 import com.mongodb.QueryBuilder;
 import com.mongodb.WriteConcern;
 import com.mongodb.WriteResult;
@@ -165,7 +166,7 @@ public class MongoDocumentStore implemen
                     break;
                 }
                 case ADD_MAP_ENTRY: {
-                    setUpdates.append(k, op.value.toString());
+                    setUpdates.append(k, op.value);
                     break;
                 }
                 case REMOVE_MAP_ENTRY: {
@@ -175,7 +176,7 @@ public class MongoDocumentStore implemen
                 case SET_MAP_ENTRY: {
                     String[] kv = k.split("\\.");
                     BasicDBObject sub = new BasicDBObject();
-                    sub.put(kv[1], op.value.toString());
+                    sub.put(kv[1], op.value);
                     setUpdates.append(kv[0], sub);
                     break;
                 }
@@ -255,17 +256,21 @@ public class MongoDocumentStore implemen
         DBCollection dbCollection = getDBCollection(collection);
         long start = start();
         try {
-            WriteResult writeResult = dbCollection.insert(inserts, WriteConcern.SAFE);
-            if (writeResult.getError() != null) {
-                throw new MicroKernelException("Batch create failed: " + writeResult.getError());
-            }
-            synchronized (cache) {
-                for (Map<String, Object> map : maps) {
-                    String path = (String) map.get(UpdateOp.ID);
-                    synchronized (cache) {
-                        cache.put(path, map);
+            try {
+                WriteResult writeResult = dbCollection.insert(inserts, WriteConcern.SAFE);
+                if (writeResult.getError() != null) {
+                    throw new MicroKernelException("Batch create failed: " + writeResult.getError());
+                }
+                synchronized (cache) {
+                    for (Map<String, Object> map : maps) {
+                        String path = (String) map.get(UpdateOp.ID);
+                        synchronized (cache) {
+                            cache.put(path, map);
+                        }
                     }
                 }
+            } catch (MongoException e) {
+                throw new MicroKernelException("Batch create failed", e);
             }
         } finally {
             end(start);

Modified: jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/prototype/Node.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/prototype/Node.java?rev=1450265&r1=1450264&r2=1450265&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/prototype/Node.java (original)
+++ jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/prototype/Node.java Tue Feb 26 16:35:55 2013
@@ -37,7 +37,11 @@ public class Node {
     }
     
     void setProperty(String propertyName, String value) {
-        properties.put(propertyName, value);
+        if (value == null) {
+            properties.remove(propertyName);
+        } else {
+            properties.put(propertyName, value);
+        }
     }
     
     public String getProperty(String propertyName) {