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/04/11 14:34:10 UTC

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

Author: mreutegg
Date: Thu Apr 11 12:34:09 2013
New Revision: 1466849

URL: http://svn.apache.org/r1466849
Log:
OAK-619 Lock-free MongoMK implementation
- Log MongoMK initialization
- Ignore unmerged branches from other MongoMK cluster node

Modified:
    jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/MongoMK.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=1466849&r1=1466848&r2=1466849&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 Thu Apr 11 12:34:09 2013
@@ -189,6 +189,7 @@ public class MongoMK implements MicroKer
                         .build();
         
         init();
+        LOG.info("Initialized MongoMK with clusterNodeId: {}", clusterId);
     }
     
     void init() {
@@ -521,8 +522,17 @@ public class MongoMK implements MicroKer
         if (value == null) {
             return false;
         }
-        if (value.equals("true") && !branchCommits.containsKey(readRevision)) {
-            return true;
+        if (value.equals("true")) {
+            if (!branchCommits.containsKey(readRevision)) {
+                return true;
+            }
+        } else {
+            // branch commit
+            if (Revision.fromString(value).getClusterId() != clusterId) {
+                // this is an unmerged branch commit from another cluster node,
+                // hence never visible to us
+                return false;
+            }
         }
         return includeRevision(revision, readRevision);
     }