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. <domgargu...@apache.org> 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; } }