From 7fba3d299060f08bffbc9f58ee72df37ff28d8a5 Mon Sep 17 00:00:00 2001 From: Brandon Williams Date: Tue, 15 Sep 2015 16:08:18 -0500 Subject: [PATCH] Don't mark nodes down before the max local pause interval once paused. Patch by brandonwilliams reviewed by Sankalp Kohli for CASSANDRA-9446 --- src/java/org/apache/cassandra/gms/FailureDetector.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/java/org/apache/cassandra/gms/FailureDetector.java b/src/java/org/apache/cassandra/gms/FailureDetector.java index a00cc3360a..58ad29f278 100644 --- a/src/java/org/apache/cassandra/gms/FailureDetector.java +++ b/src/java/org/apache/cassandra/gms/FailureDetector.java @@ -49,7 +49,7 @@ public class FailureDetector implements IFailureDetector, FailureDetectorMBean private static final long DEFAULT_MAX_PAUSE = 5000L * 1000000L; // 5 seconds private static final long MAX_LOCAL_PAUSE_IN_NANOS = getMaxLocalPause(); private long lastInterpret = System.nanoTime(); - private boolean wasPaused = false; + private long lastPause = 0L; private static long getMaxLocalPause() { @@ -247,12 +247,12 @@ public class FailureDetector implements IFailureDetector, FailureDetectorMBean if (diff > MAX_LOCAL_PAUSE_IN_NANOS) { logger.warn("Not marking nodes down due to local pause of {} > {}", diff, MAX_LOCAL_PAUSE_IN_NANOS); - wasPaused = true; + lastPause = now; return; } - if (wasPaused) + if (System.nanoTime() - lastPause < MAX_LOCAL_PAUSE_IN_NANOS) { - wasPaused = false; + logger.debug("Still not marking nodes down due to local pause"); return; } double phi = hbWnd.phi(now);