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 2017/05/18 14:21:25 UTC

svn commit: r1795537 - /jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java

Author: mreutegg
Date: Thu May 18 14:21:25 2017
New Revision: 1795537

URL: http://svn.apache.org/viewvc?rev=1795537&view=rev
Log:
OAK-3712: Clean up uncommitted changes

Start lease update thread before initial sweep

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java?rev=1795537&r1=1795536&r2=1795537&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java Thu May 18 14:21:25 2017
@@ -661,6 +661,7 @@ public final class DocumentNodeStore
         commitQueue = new CommitQueue(this);
         String threadNamePostfix = "(" + clusterId + ")";
         batchCommitQueue = new BatchCommitQueue(store);
+        // prepare background threads
         backgroundReadThread = new Thread(
                 new BackgroundReadOperation(this, isDisposed),
                 "DocumentNodeStore background read thread " + threadNamePostfix);
@@ -673,34 +674,32 @@ public final class DocumentNodeStore
                 new BackgroundSweepOperation(this, isDisposed),
                 "DocumentNodeStore background sweep thread " + threadNamePostfix);
         backgroundSweepThread.setDaemon(true);
-
+        clusterUpdateThread = new Thread(new BackgroundClusterUpdate(this, isDisposed),
+                "DocumentNodeStore cluster update thread " + threadNamePostfix);
+        clusterUpdateThread.setDaemon(true);
+        leaseUpdateThread = new Thread(new BackgroundLeaseUpdate(this, isDisposed),
+                "DocumentNodeStore lease update thread " + threadNamePostfix);
+        leaseUpdateThread.setDaemon(true);
+        // now start the background threads
+        clusterUpdateThread.start();
         backgroundReadThread.start();
         if (!readOnlyMode) {
+            // OAK-3398 : make lease updating more robust by ensuring it
+            // has higher likelihood of succeeding than other threads
+            // on a very busy machine - so as to prevent lease timeout.
+            leaseUpdateThread.setPriority(Thread.MAX_PRIORITY);
+            leaseUpdateThread.start();
+
             // perform an initial document sweep if needed
+            // this may be long running if there is no sweep revision
+            // for this clusterId (upgrade from Oak <= 1.6).
+            // it is therefore important the lease thread is running already.
             backgroundSweep();
 
             backgroundUpdateThread.start();
             backgroundSweepThread.start();
         }
 
-        leaseUpdateThread = new Thread(new BackgroundLeaseUpdate(this, isDisposed),
-                "DocumentNodeStore lease update thread " + threadNamePostfix);
-        leaseUpdateThread.setDaemon(true);
-        // OAK-3398 : make lease updating more robust by ensuring it
-        // has higher likelihood of succeeding than other threads
-        // on a very busy machine - so as to prevent lease timeout.
-        leaseUpdateThread.setPriority(Thread.MAX_PRIORITY);
-        if (!readOnlyMode) {
-            leaseUpdateThread.start();
-        }
-
-        clusterUpdateThread = new Thread(new BackgroundClusterUpdate(this, isDisposed),
-                "DocumentNodeStore cluster update thread " + threadNamePostfix);
-        clusterUpdateThread.setDaemon(true);
-        if (!readOnlyMode) {
-            clusterUpdateThread.start();
-        }
-
         persistentCache = builder.getPersistentCache();
         if (!readOnlyMode && persistentCache != null) {
             DynamicBroadcastConfig broadcastConfig = new DocumentBroadcastConfig(this);