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 2019/10/29 06:02:10 UTC
svn commit: r1869093 -
/jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/ClusterNodeInfo.java
Author: reschke
Date: Tue Oct 29 06:02:09 2019
New Revision: 1869093
URL: http://svn.apache.org/viewvc?rev=1869093&view=rev
Log:
OAK-8694: state time of start of LeaseFailure in exception/log entry
Modified:
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/ClusterNodeInfo.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=1869093&r1=1869092&r2=1869093&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 Tue Oct 29 06:02:09 2019
@@ -24,6 +24,8 @@ import static org.apache.jackrabbit.oak.
import java.lang.management.ManagementFactory;
import java.net.NetworkInterface;
+import java.time.Instant;
+import java.time.format.DateTimeFormatter;
import java.util.AbstractMap;
import java.util.ArrayList;
import java.util.Collections;
@@ -745,7 +747,7 @@ public class ClusterNodeInfo {
// (note that once a lease check failed it would not
// be updated again, ever, as guaranteed by checking
// for leaseCheckFailed in renewLease() )
- throw leaseExpired(LEASE_CHECK_FAILED_MSG, true);
+ throw leaseExpired(LEASE_CHECK_FAILED_MSG + " (since " + asISO8601(leaseEndTime) + ")", true);
}
long now = getCurrentTime();
// OAK-3238 put the barrier 1/3 of 60sec=20sec before the end
@@ -760,7 +762,7 @@ public class ClusterNodeInfo {
synchronized(this) {
if (leaseCheckFailed) {
// someone else won and marked leaseCheckFailed - so we only log/throw
- throw leaseExpired(LEASE_CHECK_FAILED_MSG, true);
+ throw leaseExpired(LEASE_CHECK_FAILED_MSG + " (since " + asISO8601(leaseEndTime) + ")", true);
}
// only retry in lenient mode, fail immediately in strict mode
final int maxRetries = leaseCheckMode == LeaseCheckMode.STRICT ?
@@ -811,20 +813,19 @@ public class ClusterNodeInfo {
}
if (leaseCheckFailed) {
// someone else won and marked leaseCheckFailed - so we only log/throw
- throw leaseExpired(LEASE_CHECK_FAILED_MSG, true);
+ throw leaseExpired(LEASE_CHECK_FAILED_MSG + " (since " + asISO8601(leaseEndTime) + ")", true);
}
leaseCheckFailed = true; // make sure only one thread 'wins', ie goes any further
}
- final String errorMsg = LEASE_CHECK_FAILED_MSG+" (leaseEndTime: "+leaseEndTime+
- ", leaseTime: "+leaseTime+
- ", leaseFailureMargin: "+leaseFailureMargin+
- ", lease check end time (leaseEndTime-leaseFailureMargin): "+(leaseEndTime - leaseFailureMargin)+
- ", now: "+now+
- ", remaining: "+((leaseEndTime - leaseFailureMargin) - now)+
- ") Need to stop oak-store-document/DocumentNodeStoreService.";
- LOG.error(errorMsg);
+ String template = "%s (mode: %s, leaseEndTime: %d (%s), leaseTime: %d, leaseFailureMargin: %d, "
+ + "lease check end time (leaseEndTime - leaseFailureMargin): %d (%s), now: %d (%s), remaining: %d)"
+ + " Need to stop oak-store-document/DocumentNodeStoreService.";
+ String errorMsg = String.format(template, LEASE_CHECK_FAILED_MSG, leaseCheckMode.name(), leaseEndTime,
+ asISO8601(leaseEndTime), leaseTime, leaseFailureMargin, leaseEndTime - leaseFailureMargin,
+ asISO8601(leaseEndTime - leaseFailureMargin), now, asISO8601(now), (leaseEndTime - leaseFailureMargin) - now);
+ LOG.error(errorMsg);
handleLeaseFailure(errorMsg);
}
@@ -908,7 +909,7 @@ public class ClusterNodeInfo {
if (leaseCheckFailed) {
// prevent lease renewal after it failed
- throw leaseExpired(LEASE_CHECK_FAILED_MSG, true);
+ throw leaseExpired(LEASE_CHECK_FAILED_MSG + " (since " + asISO8601(leaseEndTime) + ")", true);
}
// synchronized could have delayed the 'now', so
// set it again..
@@ -922,20 +923,18 @@ public class ClusterNodeInfo {
synchronized (this) {
if (leaseCheckFailed) {
// some other thread already noticed and calls failure handler
- throw leaseExpired(LEASE_CHECK_FAILED_MSG, true);
+ throw leaseExpired(LEASE_CHECK_FAILED_MSG + " (since " + asISO8601(leaseEndTime) + ")", true);
}
// current thread calls failure handler
// outside synchronized block
leaseCheckFailed = true;
}
- final String errorMsg = LEASE_CHECK_FAILED_MSG + " (mode: " + leaseCheckMode.name() +
- ",leaseEndTime: " + leaseEndTime +
- ", leaseTime: " + leaseTime +
- ", leaseFailureMargin: " + leaseFailureMargin +
- ", lease check end time (leaseEndTime-leaseFailureMargin): " + (leaseEndTime - leaseFailureMargin) +
- ", now: " + now +
- ", remaining: " + ((leaseEndTime - leaseFailureMargin) - now) +
- ") Need to stop oak-store-document/DocumentNodeStoreService.";
+ String template = "%s (mode: %s, leaseEndTime: %d (%s), leaseTime: %d, leaseFailureMargin: %d, "
+ + "lease check end time (leaseEndTime - leaseFailureMargin): %d (%s), now: %d (%s), remaining: %d)"
+ + " Need to stop oak-store-document/DocumentNodeStoreService.";
+ String errorMsg = String.format(template, LEASE_CHECK_FAILED_MSG, leaseCheckMode.name(), leaseEndTime,
+ asISO8601(leaseEndTime), leaseTime, leaseFailureMargin, leaseEndTime - leaseFailureMargin,
+ asISO8601(leaseEndTime - leaseFailureMargin), now, asISO8601(now), (leaseEndTime - leaseFailureMargin) - now);
LOG.error(errorMsg);
handleLeaseFailure(errorMsg);
// should never be reached: handleLeaseFailure throws a DocumentStoreException
@@ -1291,4 +1290,8 @@ public class ClusterNodeInfo {
}
return new DocumentStoreException(msg);
}
-}
+
+ private static String asISO8601(long ms) {
+ return DateTimeFormatter.ISO_INSTANT.format(Instant.ofEpochMilli(ms));
+ }
+}
\ No newline at end of file