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);
         }
     }
 }


Reply via email to