From 82afe9a348513b3f6902b3a90370a0f23243cc84 Mon Sep 17 00:00:00 2001 From: OneSizeFitQuorum Date: Mon, 7 Aug 2023 11:00:23 +0800 Subject: [PATCH] finish Signed-off-by: OneSizeFitQuorum --- .../main/java/org/apache/ratis/util/JvmPauseMonitor.java | 8 +++++--- .../org/apache/ratis/server/impl/RaftServerProxy.java | 3 ++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/ratis-common/src/main/java/org/apache/ratis/util/JvmPauseMonitor.java b/ratis-common/src/main/java/org/apache/ratis/util/JvmPauseMonitor.java index 532bd2255a..fac3d0ede9 100644 --- a/ratis-common/src/main/java/org/apache/ratis/util/JvmPauseMonitor.java +++ b/ratis-common/src/main/java/org/apache/ratis/util/JvmPauseMonitor.java @@ -88,14 +88,16 @@ static String toString(Map beforeSleep, TimeDuration extraSleepT } private static final TimeDuration SLEEP_TIME = TimeDuration.valueOf(500, TimeUnit.MILLISECONDS); - private static final TimeDuration WARN_THRESHOLD = TimeDuration.valueOf(100, TimeUnit.MILLISECONDS); + private final TimeDuration sleepDeviationThreshold; private final String name; private final AtomicReference threadRef = new AtomicReference<>(); private final CheckedConsumer handler; - public JvmPauseMonitor(Object name, CheckedConsumer handler) { + public JvmPauseMonitor(Object name, TimeDuration sleepDeviationThreshold, + CheckedConsumer handler) { this.name = JavaUtils.getClassSimpleName(getClass()) + "-" + name; + this.sleepDeviationThreshold = sleepDeviationThreshold; this.handler = handler; } @@ -119,7 +121,7 @@ private void detectPause() { return; } - if (extraSleep.compareTo(WARN_THRESHOLD) > 0) { + if (extraSleep.compareTo(sleepDeviationThreshold) > 0) { final Map after = getGcTimes(); LOG.warn("{}: {}", this, toString(before, extraSleep, after)); } diff --git a/ratis-server/src/main/java/org/apache/ratis/server/impl/RaftServerProxy.java b/ratis-server/src/main/java/org/apache/ratis/server/impl/RaftServerProxy.java index b6ca9b7c9a..89f49210eb 100644 --- a/ratis-server/src/main/java/org/apache/ratis/server/impl/RaftServerProxy.java +++ b/ratis-server/src/main/java/org/apache/ratis/server/impl/RaftServerProxy.java @@ -219,9 +219,10 @@ String toString(RaftGroupId groupId, CompletableFuture f) { RaftServerConfigKeys.ThreadPool.proxySize(properties), id + "-impl"); + final TimeDuration sleepDeviationThreshold = RaftServerConfigKeys.sleepDeviationThreshold(properties); final TimeDuration rpcSlownessTimeout = RaftServerConfigKeys.Rpc.slownessTimeout(properties); final TimeDuration leaderStepDownWaitTime = RaftServerConfigKeys.LeaderElection.leaderStepDownWaitTime(properties); - this.pauseMonitor = new JvmPauseMonitor(id, + this.pauseMonitor = new JvmPauseMonitor(id, sleepDeviationThreshold, extraSleep -> handleJvmPause(extraSleep, rpcSlownessTimeout, leaderStepDownWaitTime)); this.threadGroup = threadGroup == null ? new ThreadGroup(this.id.toString()) : threadGroup; }