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 ju...@apache.org on 2013/02/12 15:23:42 UTC

svn commit: r1445180 - /jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/MongoStore.java

Author: jukka
Date: Tue Feb 12 14:23:41 2013
New Revision: 1445180

URL: http://svn.apache.org/r1445180
Log:
OAK-593: Segment-based MK

MongoStore initialization and proper atomic journal updates

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/MongoStore.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/MongoStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/MongoStore.java?rev=1445180&r1=1445179&r2=1445180&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/MongoStore.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/MongoStore.java Tue Feb 12 14:23:41 2013
@@ -20,6 +20,8 @@ import java.util.List;
 import java.util.UUID;
 import java.util.concurrent.ExecutionException;
 
+import org.apache.jackrabbit.oak.plugins.memory.MemoryNodeState;
+
 import com.google.common.cache.CacheBuilder;
 import com.google.common.cache.CacheLoader;
 import com.google.common.cache.LoadingCache;
@@ -56,6 +58,15 @@ public class MongoStore implements Segme
                         return findSegment(key);
                     }
                 });
+
+        SegmentWriter writer = new SegmentWriter(this);
+        RecordId id = writer.writeNode(MemoryNodeState.EMPTY_NODE);
+        writer.flush();
+        journals.update(
+                new BasicDBObject("_id", "root"),
+                new BasicDBObject(ImmutableMap.of(
+                        "_id", "root", "head", id.toString())),
+                true /* upsert */, false);
     }
 
     public MongoStore(DB db) {
@@ -79,7 +90,7 @@ public class MongoStore implements Segme
                 ImmutableMap.of("_id", "root", "head", base.toString()));
         DBObject headObject = new BasicDBObject(
                 ImmutableMap.of("_id", "root", "head", head.toString()));
-        return journals.update(baseObject, headObject).getN() == 1;
+        return journals.findAndModify(baseObject, headObject) != null;
     }
 
     @Override