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 to...@apache.org on 2017/02/20 11:14:59 UTC

svn commit: r1783743 - in /jackrabbit/oak/branches/1.6/oak-core/src: main/java/org/apache/jackrabbit/oak/plugins/document/ main/java/org/apache/jackrabbit/oak/plugins/document/mongo/ main/java/org/apache/jackrabbit/oak/plugins/document/util/ test/java/...

Author: tomekr
Date: Mon Feb 20 11:14:58 2017
New Revision: 1783743

URL: http://svn.apache.org/viewvc?rev=1783743&view=rev
Log:
OAK-5703: The replica set info gets invalid cluster id

Modified:
    jackrabbit/oak/branches/1.6/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/NodeDocument.java
    jackrabbit/oak/branches/1.6/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/RevisionListener.java
    jackrabbit/oak/branches/1.6/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java
    jackrabbit/oak/branches/1.6/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/LeaseCheckDocumentStoreWrapper.java
    jackrabbit/oak/branches/1.6/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/LoggingDocumentStoreWrapper.java
    jackrabbit/oak/branches/1.6/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/SynchronizingDocumentStoreWrapper.java
    jackrabbit/oak/branches/1.6/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/TimingDocumentStoreWrapper.java
    jackrabbit/oak/branches/1.6/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/CountingDocumentStore.java
    jackrabbit/oak/branches/1.6/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentStoreWrapper.java

Modified: jackrabbit/oak/branches/1.6/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/NodeDocument.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.6/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/NodeDocument.java?rev=1783743&r1=1783742&r2=1783743&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.6/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/NodeDocument.java (original)
+++ jackrabbit/oak/branches/1.6/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/NodeDocument.java Mon Feb 20 11:14:58 2017
@@ -1048,7 +1048,7 @@ public final class NodeDocument extends
         }
 
         if (store instanceof RevisionListener) {
-            ((RevisionListener) store).updateAccessedRevision(lastRevision);
+            ((RevisionListener) store).updateAccessedRevision(lastRevision, nodeStore.getClusterId());
         }
 
         return new DocumentNodeState(nodeStore, path, readRevision, props, hasChildren(), lastRevision);

Modified: jackrabbit/oak/branches/1.6/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/RevisionListener.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.6/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/RevisionListener.java?rev=1783743&r1=1783742&r2=1783743&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.6/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/RevisionListener.java (original)
+++ jackrabbit/oak/branches/1.6/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/RevisionListener.java Mon Feb 20 11:14:58 2017
@@ -22,6 +22,6 @@ package org.apache.jackrabbit.oak.plugin
  */
 public interface RevisionListener {
 
-    void updateAccessedRevision(RevisionVector revision);
+    void updateAccessedRevision(RevisionVector revision, int currentClusterId);
 
 }

Modified: jackrabbit/oak/branches/1.6/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.6/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java?rev=1783743&r1=1783742&r2=1783743&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.6/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java (original)
+++ jackrabbit/oak/branches/1.6/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java Mon Feb 20 11:14:58 2017
@@ -149,7 +149,7 @@ public class MongoDocumentStore implemen
 
     private RevisionVector mostRecentAccessedRevisions;
 
-    final LocalChanges localChanges;
+    LocalChanges localChanges;
 
     private final long maxReplicationLagMillis;
 
@@ -249,11 +249,9 @@ public class MongoDocumentStore implemen
             localChanges = null;
         } else {
             replicaInfo = new ReplicaSetInfo(clock, db, builder.getMongoUri(), estimationPullFrequencyMS, maxReplicationLagMillis, builder.getExecutor());
-            Thread replicaInfoThread = new Thread(replicaInfo, "MongoDocumentStore replica set info provider (" + builder.getClusterId() + ")");
+            Thread replicaInfoThread = new Thread(replicaInfo, "MongoDocumentStore replica set info provider");
             replicaInfoThread.setDaemon(true);
             replicaInfoThread.start();
-            localChanges = new LocalChanges(builder.getClusterId());
-            replicaInfo.addListener(localChanges);
         }
 
         // indexes:
@@ -1325,12 +1323,14 @@ public class MongoDocumentStore implemen
                         NodeDocument cachedDoc = nodesCache.getIfPresent(parentId);
                         secondarySafe = cachedDoc != null && !cachedDoc.hasBeenModifiedSince(replicationSafeLimit);
                     }
-                } else {
+                } else if (localChanges != null) {
                     secondarySafe = true;
                     secondarySafe &= collection == Collection.NODES;
                     secondarySafe &= documentId == null || !localChanges.mayContain(documentId);
                     secondarySafe &= parentId == null || !localChanges.mayContainChildrenOf(parentId);
                     secondarySafe &= mostRecentAccessedRevisions == null || replicaInfo.isMoreRecentThan(mostRecentAccessedRevisions);
+                } else { // localChanges not initialized yet
+                    secondarySafe = false;
                 }
 
                 ReadPreference readPreference;
@@ -1666,7 +1666,12 @@ public class MongoDocumentStore implemen
     }
 
     @Override
-    public synchronized void updateAccessedRevision(RevisionVector revisions) {
+    public synchronized void updateAccessedRevision(RevisionVector revisions, int clusterId) {
+        if (localChanges == null && replicaInfo != null) {
+            localChanges = new LocalChanges(clusterId);
+            replicaInfo.addListener(localChanges);
+        }
+
         RevisionVector previousValue = mostRecentAccessedRevisions;
         if (mostRecentAccessedRevisions == null) {
             mostRecentAccessedRevisions = revisions;

Modified: jackrabbit/oak/branches/1.6/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/LeaseCheckDocumentStoreWrapper.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.6/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/LeaseCheckDocumentStoreWrapper.java?rev=1783743&r1=1783742&r2=1783743&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.6/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/LeaseCheckDocumentStoreWrapper.java (original)
+++ jackrabbit/oak/branches/1.6/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/LeaseCheckDocumentStoreWrapper.java Mon Feb 20 11:14:58 2017
@@ -215,9 +215,9 @@ public final class LeaseCheckDocumentSto
     }
 
     @Override
-    public void updateAccessedRevision(RevisionVector revision) {
+    public void updateAccessedRevision(RevisionVector revision, int currentClusterId) {
         if (delegate instanceof RevisionListener) {
-            ((RevisionListener) delegate).updateAccessedRevision(revision);
+            ((RevisionListener) delegate).updateAccessedRevision(revision, currentClusterId);
         }
     }
 

Modified: jackrabbit/oak/branches/1.6/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/LoggingDocumentStoreWrapper.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.6/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/LoggingDocumentStoreWrapper.java?rev=1783743&r1=1783742&r2=1783743&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.6/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/LoggingDocumentStoreWrapper.java (original)
+++ jackrabbit/oak/branches/1.6/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/LoggingDocumentStoreWrapper.java Mon Feb 20 11:14:58 2017
@@ -430,10 +430,10 @@ public class LoggingDocumentStoreWrapper
     }
 
     @Override
-    public void updateAccessedRevision(RevisionVector revision) {
+    public void updateAccessedRevision(RevisionVector revision, int currentClusterId) {
         logMethod("updateAccessedRevision", revision);
         if (store instanceof RevisionListener) {
-            ((RevisionListener) store).updateAccessedRevision(revision);
+            ((RevisionListener) store).updateAccessedRevision(revision, currentClusterId);
         }
     }
 }

Modified: jackrabbit/oak/branches/1.6/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/SynchronizingDocumentStoreWrapper.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.6/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/SynchronizingDocumentStoreWrapper.java?rev=1783743&r1=1783742&r2=1783743&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.6/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/SynchronizingDocumentStoreWrapper.java (original)
+++ jackrabbit/oak/branches/1.6/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/SynchronizingDocumentStoreWrapper.java Mon Feb 20 11:14:58 2017
@@ -162,9 +162,9 @@ public class SynchronizingDocumentStoreW
     }
 
     @Override
-    public synchronized void updateAccessedRevision(RevisionVector revision) {
+    public synchronized void updateAccessedRevision(RevisionVector revision, int currentClusterId) {
         if (store instanceof RevisionListener) {
-            ((RevisionListener) store).updateAccessedRevision(revision);
+            ((RevisionListener) store).updateAccessedRevision(revision, currentClusterId);
         }
     }
 }

Modified: jackrabbit/oak/branches/1.6/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/TimingDocumentStoreWrapper.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.6/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/TimingDocumentStoreWrapper.java?rev=1783743&r1=1783742&r2=1783743&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.6/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/TimingDocumentStoreWrapper.java (original)
+++ jackrabbit/oak/branches/1.6/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/TimingDocumentStoreWrapper.java Mon Feb 20 11:14:58 2017
@@ -412,11 +412,11 @@ public class TimingDocumentStoreWrapper
     }
 
     @Override
-    public void updateAccessedRevision(RevisionVector revision) {
+    public void updateAccessedRevision(RevisionVector revision, int currentClusterId) {
         try {
             long start = now();
             if (base instanceof RevisionListener) {
-                ((RevisionListener) base).updateAccessedRevision(revision);
+                ((RevisionListener) base).updateAccessedRevision(revision, currentClusterId);
             }
             updateAndLogTimes("updateAccessedRevision", start, 0, 0);
         } catch (Exception e) {

Modified: jackrabbit/oak/branches/1.6/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/CountingDocumentStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.6/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/CountingDocumentStore.java?rev=1783743&r1=1783742&r2=1783743&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.6/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/CountingDocumentStore.java (original)
+++ jackrabbit/oak/branches/1.6/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/CountingDocumentStore.java Mon Feb 20 11:14:58 2017
@@ -240,9 +240,9 @@ public class CountingDocumentStore imple
     }
 
     @Override
-    public void updateAccessedRevision(RevisionVector revision) {
+    public void updateAccessedRevision(RevisionVector revision, int currentClusterId) {
         if (delegate instanceof RevisionListener) {
-            ((RevisionListener) delegate).updateAccessedRevision(revision);
+            ((RevisionListener) delegate).updateAccessedRevision(revision, currentClusterId);
         }
     }
 }

Modified: jackrabbit/oak/branches/1.6/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentStoreWrapper.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.6/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentStoreWrapper.java?rev=1783743&r1=1783742&r2=1783743&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.6/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentStoreWrapper.java (original)
+++ jackrabbit/oak/branches/1.6/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentStoreWrapper.java Mon Feb 20 11:14:58 2017
@@ -173,9 +173,9 @@ public class DocumentStoreWrapper implem
     }
 
     @Override
-    public void updateAccessedRevision(RevisionVector revision) {
+    public void updateAccessedRevision(RevisionVector revision, int currentClusterId) {
         if (store instanceof RevisionListener) {
-            ((RevisionListener) store).updateAccessedRevision(revision);
+            ((RevisionListener) store).updateAccessedRevision(revision, currentClusterId);
         }
     }
 }