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 re...@apache.org on 2021/02/19 18:41:34 UTC

svn commit: r1886696 - in /jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document: ClusterNodeInfo.java DocumentNodeStore.java

Author: reschke
Date: Fri Feb 19 18:41:34 2021
New Revision: 1886696

URL: http://svn.apache.org/viewvc?rev=1886696&view=rev
Log:
OAK-9356: DocumentNodeStore: in dispose(), improve lease update diagnostics

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

Modified: jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/ClusterNodeInfo.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/ClusterNodeInfo.java?rev=1886696&r1=1886695&r2=1886696&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/ClusterNodeInfo.java (original)
+++ jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/ClusterNodeInfo.java Fri Feb 19 18:41:34 2021
@@ -835,7 +835,7 @@ public class ClusterNodeInfo {
      * @return {@code true} if the lease is considered expired, {@code false}
      *         otherwise.
      */
-    private boolean isLeaseExpired(long time) {
+    protected boolean isLeaseExpired(long time) {
         return time >= (leaseEndTime - leaseFailureMargin);
     }
 

Modified: jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java?rev=1886696&r1=1886695&r2=1886696&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java (original)
+++ jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java Fri Feb 19 18:41:34 2021
@@ -883,6 +883,27 @@ public final class DocumentNodeStore
 
         Utils.joinQuietly(clusterUpdateThread);
 
+        // attempt diagnostics on lease update thread
+        boolean isLeaseExpired = clusterNodeInfo.isLeaseExpired(clock.getTime());
+        Thread.State leaseUpdateState = leaseUpdateThread.getState();
+        if (leaseUpdateState == Thread.State.TERMINATED) {
+            LOG.error("leaseUpdateThread (" + leaseUpdateThread.getName() + ") is terminated");
+        }
+
+        if (isLeaseExpired || LOG.isDebugEnabled()) {
+            StringBuilder message = new StringBuilder(
+                    "Status of lease update thread (" + leaseUpdateThread.getName() + "): " + leaseUpdateState + "; Stack Trace:");
+            for (StackTraceElement se : leaseUpdateThread.getStackTrace()) {
+                message.append("\n\tat ");
+                message.append(se.toString());
+            }
+            if (isLeaseExpired) {
+                LOG.info(message.toString());
+            } else {
+                LOG.debug(message.toString());
+            }
+        }
+
         // Stop lease update thread once no further document store operations
         // are required
         LOG.debug("Stopping LeaseUpdate thread...");