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/05/28 17:08:21 UTC

svn commit: r1486955 - in /jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk: MongoMK.java UnmergedBranches.java

Author: mreutegg
Date: Tue May 28 15:08:20 2013
New Revision: 1486955

URL: http://svn.apache.org/r1486955
Log:
OAK-619 Lock-free MongoMK implementation
- Use Revision comparator from MongoMK in UnmergedBranches

Modified:
    jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/MongoMK.java
    jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/UnmergedBranches.java

Modified: jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/MongoMK.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/MongoMK.java?rev=1486955&r1=1486954&r2=1486955&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/MongoMK.java (original)
+++ jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/MongoMK.java Tue May 28 15:08:20 2013
@@ -180,7 +180,7 @@ public class MongoMK implements MicroKer
      */
     // TODO at some point, open (unmerged) branches
     // need to be garbage collected (in-memory and on disk)
-    private final UnmergedBranches branches = new UnmergedBranches();
+    private final UnmergedBranches branches;
 
     private boolean stopBackground;
     
@@ -202,6 +202,7 @@ public class MongoMK implements MicroKer
         
         this.revisionComparator = new RevisionComparator(clusterId);
         this.asyncDelay = builder.getAsyncDelay();
+        this.branches = new UnmergedBranches(revisionComparator);
 
         //TODO Use size based weigher
         nodeCache = CacheBuilder.newBuilder()
@@ -1116,7 +1117,6 @@ public class MongoMK implements MicroKer
      * 
      * @param nodeMap the document
      * @param changeRev the revision of the current change
-     * @param onlyCommitted whether only committed changes should be considered
      * @param handler the conflict handler, which is called for un-committed revisions
      *                preceding <code>before</code>.
      * @return the revision, or null if deleted
@@ -1265,7 +1265,7 @@ public class MongoMK implements MicroKer
                 // remove from branchCommits map after successful update
                 branches.remove(b);
             } else {
-                throw new MicroKernelException("Conflicting concurrent change");
+                throw new MicroKernelException("Conflicting concurrent change. Update operation failed: " + op);
             }
         } else {
             // no commits in this branch -> do nothing

Modified: jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/UnmergedBranches.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/UnmergedBranches.java?rev=1486955&r1=1486954&r2=1486955&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/UnmergedBranches.java (original)
+++ jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/UnmergedBranches.java Tue May 28 15:08:20 2013
@@ -51,8 +51,11 @@ class UnmergedBranches {
     /**
      * The revision comparator.
      */
-    // TODO use the same comparator as MongoMK?
-    private final Revision.RevisionComparator comparator = new Revision.RevisionComparator(0);
+    private final Revision.RevisionComparator comparator;
+
+    UnmergedBranches(@Nonnull Revision.RevisionComparator comparator) {
+        this.comparator = checkNotNull(comparator);
+    }
 
     /**
      * Initialize with un-merged branches from <code>store</code> for this