From eb9c5bbcfdaf498967052e02af65fa9f8167887d Mon Sep 17 00:00:00 2001 From: Brandon Williams Date: Tue, 6 Jan 2015 09:30:07 -0600 Subject: [PATCH] Improve FD logging when the arrival time is ignored. Patch by Brandon Williams for CASSANDRA-8245 --- .../apache/cassandra/gms/FailureDetector.java | 8 +++---- .../cassandra/gms/ArrivalWindowTest.java | 24 ++++++++++++++----- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/src/java/org/apache/cassandra/gms/FailureDetector.java b/src/java/org/apache/cassandra/gms/FailureDetector.java index 60729d385b..e247e481ab 100644 --- a/src/java/org/apache/cassandra/gms/FailureDetector.java +++ b/src/java/org/apache/cassandra/gms/FailureDetector.java @@ -211,12 +211,12 @@ public class FailureDetector implements IFailureDetector, FailureDetectorMBean { // avoid adding an empty ArrivalWindow to the Map heartbeatWindow = new ArrivalWindow(SAMPLE_SIZE); - heartbeatWindow.add(now); + heartbeatWindow.add(now, ep); arrivalSamples.put(ep, heartbeatWindow); } else { - heartbeatWindow.add(now); + heartbeatWindow.add(now, ep); } } @@ -326,7 +326,7 @@ class ArrivalWindow } } - synchronized void add(long value) + synchronized void add(long value, InetAddress ep) { assert tLast >= 0; if (tLast > 0L) @@ -335,7 +335,7 @@ class ArrivalWindow if (interArrivalTime <= MAX_INTERVAL_IN_NANO) arrivalIntervals.add(interArrivalTime); else - logger.debug("Ignoring interval time of {}", interArrivalTime); + logger.debug("Ignoring interval time of {} for {}", interArrivalTime, ep); } else { diff --git a/test/unit/org/apache/cassandra/gms/ArrivalWindowTest.java b/test/unit/org/apache/cassandra/gms/ArrivalWindowTest.java index e678d86fca..511511bc5c 100644 --- a/test/unit/org/apache/cassandra/gms/ArrivalWindowTest.java +++ b/test/unit/org/apache/cassandra/gms/ArrivalWindowTest.java @@ -25,6 +25,10 @@ import static org.junit.Assert.*; import org.junit.Test; +import java.lang.RuntimeException; +import java.net.InetAddress; +import java.net.UnknownHostException; + public class ArrivalWindowTest { @Test @@ -32,12 +36,20 @@ public class ArrivalWindowTest { final ArrivalWindow windowWithNano = new ArrivalWindow(4); final long toNano = 1000000L; - - windowWithNano.add(111 * toNano); - windowWithNano.add(222 * toNano); - windowWithNano.add(333 * toNano); - windowWithNano.add(444 * toNano); - windowWithNano.add(555 * toNano); + InetAddress ep; + try + { + ep = InetAddress.getLocalHost(); + } + catch (UnknownHostException e) + { + throw new RuntimeException(e); + } + windowWithNano.add(111 * toNano, ep); + windowWithNano.add(222 * toNano, ep); + windowWithNano.add(333 * toNano, ep); + windowWithNano.add(444 * toNano, ep); + windowWithNano.add(555 * toNano, ep); //all good assertEquals(1.0, windowWithNano.phi(666 * toNano), 0.01);