This is an automated email from the ASF dual-hosted git repository.
domgarguilo pushed a commit to branch 3.1
in repository https://gitbox.apache.org/repos/asf/accumulo.git
The following commit(s) were added to refs/heads/3.1 by this push:
new 5e09d985e7 Improve readability of timekeeping code in idle server
check (#4737)
5e09d985e7 is described below
commit 5e09d985e74d408066c23f3b2ae5f10f63b97b45
Author: Dom G. <[email protected]>
AuthorDate: Wed Sep 11 13:19:12 2024 -0400
Improve readability of timekeeping code in idle server check (#4737)
* Improve readability of timekeeping in idle server check code
* Update to use Timer object
---
.../org/apache/accumulo/server/AbstractServer.java | 28 ++++++++++++----------
1 file changed, 15 insertions(+), 13 deletions(-)
diff --git
a/server/base/src/main/java/org/apache/accumulo/server/AbstractServer.java
b/server/base/src/main/java/org/apache/accumulo/server/AbstractServer.java
index dc46e0ecd0..47fe34bf26 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/AbstractServer.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/AbstractServer.java
@@ -18,8 +18,9 @@
*/
package org.apache.accumulo.server;
+import static java.util.concurrent.TimeUnit.MILLISECONDS;
+
import java.util.concurrent.ScheduledFuture;
-import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicReference;
import org.apache.accumulo.core.Constants;
@@ -29,6 +30,7 @@ import org.apache.accumulo.core.conf.AccumuloConfiguration;
import org.apache.accumulo.core.conf.Property;
import org.apache.accumulo.core.metrics.MetricsProducer;
import org.apache.accumulo.core.trace.TraceUtil;
+import org.apache.accumulo.core.util.Timer;
import org.apache.accumulo.core.util.threads.ThreadPools;
import org.apache.accumulo.server.mem.LowMemoryDetector;
import org.apache.accumulo.server.metrics.ProcessMetrics;
@@ -44,8 +46,8 @@ public abstract class AbstractServer implements
AutoCloseable, MetricsProducer,
protected final String applicationName;
private final String hostname;
private final ProcessMetrics processMetrics;
- protected final long idleReportingPeriodNanos;
- private volatile long idlePeriodStartNanos = 0L;
+ protected final long idleReportingPeriodMillis;
+ private volatile Timer idlePeriodTimer = null;
protected AbstractServer(String appName, ConfigOpts opts, String[] args) {
this.applicationName = appName;
@@ -67,11 +69,11 @@ public abstract class AbstractServer implements
AutoCloseable, MetricsProducer,
final LowMemoryDetector lmd = context.getLowMemoryDetector();
ScheduledFuture<?> future =
context.getScheduledExecutor().scheduleWithFixedDelay(
() -> lmd.logGCInfo(context.getConfiguration()), 0,
- lmd.getIntervalMillis(context.getConfiguration()),
TimeUnit.MILLISECONDS);
+ lmd.getIntervalMillis(context.getConfiguration()), MILLISECONDS);
ThreadPools.watchNonCriticalScheduledTask(future);
processMetrics = new ProcessMetrics(context);
- idleReportingPeriodNanos = TimeUnit.MILLISECONDS.toNanos(
-
context.getConfiguration().getTimeInMillis(Property.GENERAL_IDLE_PROCESS_INTERVAL));
+ idleReportingPeriodMillis =
+
context.getConfiguration().getTimeInMillis(Property.GENERAL_IDLE_PROCESS_INTERVAL);
}
/**
@@ -82,22 +84,22 @@ public abstract class AbstractServer implements
AutoCloseable, MetricsProducer,
* @param isIdle whether the server is idle
*/
protected void updateIdleStatus(boolean isIdle) {
- boolean shouldResetIdlePeriod = !isIdle || idleReportingPeriodNanos == 0;
- boolean isIdlePeriodNotStarted = idlePeriodStartNanos == 0;
+ boolean shouldResetIdlePeriod = !isIdle || idleReportingPeriodMillis == 0;
+ boolean hasIdlePeriodStarted = idlePeriodTimer != null;
boolean hasExceededIdlePeriod =
- (System.nanoTime() - idlePeriodStartNanos) > idleReportingPeriodNanos;
+ hasIdlePeriodStarted &&
idlePeriodTimer.hasElapsed(idleReportingPeriodMillis, MILLISECONDS);
if (shouldResetIdlePeriod) {
// Reset idle period and set idle metric to false
- idlePeriodStartNanos = 0;
+ idlePeriodTimer = null;
processMetrics.setIdleValue(false);
- } else if (isIdlePeriodNotStarted) {
+ } else if (!hasIdlePeriodStarted) {
// Start tracking idle period
- idlePeriodStartNanos = System.nanoTime();
+ idlePeriodTimer = Timer.startNew();
} else if (hasExceededIdlePeriod) {
// Set idle metric to true and reset the start of the idle period
processMetrics.setIdleValue(true);
- idlePeriodStartNanos = 0;
+ idlePeriodTimer = null;
}
}