This is an automated email from the ASF dual-hosted git repository. ddanielr pushed a commit to branch 2.1 in repository https://gitbox.apache.org/repos/asf/accumulo.git
The following commit(s) were added to refs/heads/2.1 by this push: new 191377150d Remove negative value from server idle (#5061) 191377150d is described below commit 191377150dd860cd28a4d0010ad647bcfb6eae95 Author: Daniel Roberts <ddani...@gmail.com> AuthorDate: Sat Nov 16 03:59:56 2024 +0000 Remove negative value from server idle (#5061) When using a sum aggregator for metric queries, the possible negative value removes values causing graphing issues. Removes the startup value of the service (-1) in favor of reporting an initial error state. --- .../accumulo/server/metrics/ProcessMetrics.java | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/server/base/src/main/java/org/apache/accumulo/server/metrics/ProcessMetrics.java b/server/base/src/main/java/org/apache/accumulo/server/metrics/ProcessMetrics.java index 4ebbeb22a2..626da841f7 100644 --- a/server/base/src/main/java/org/apache/accumulo/server/metrics/ProcessMetrics.java +++ b/server/base/src/main/java/org/apache/accumulo/server/metrics/ProcessMetrics.java @@ -18,26 +18,35 @@ */ package org.apache.accumulo.server.metrics; -import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.atomic.AtomicBoolean; import org.apache.accumulo.core.metrics.MetricsProducer; +import io.micrometer.core.instrument.Gauge; import io.micrometer.core.instrument.MeterRegistry; public class ProcessMetrics implements MetricsProducer { - private final AtomicInteger isIdle; + private final AtomicBoolean isIdle; public ProcessMetrics() { - this.isIdle = new AtomicInteger(-1); + this.isIdle = new AtomicBoolean(true); } @Override public void registerMetrics(MeterRegistry registry) { - registry.gauge(METRICS_SERVER_IDLE, isIdle, AtomicInteger::get); + Gauge.builder(METRICS_SERVER_IDLE, this, this::getIdleAsDouble) + .description("Indicates if the server is idle or not. " + + "The value will be 1 when idle and 0 when not idle") + .register(registry); } public void setIdleValue(boolean isIdle) { - this.isIdle.set(isIdle ? 1 : 0); + this.isIdle.set(isIdle); } + + public double getIdleAsDouble(ProcessMetrics processMetrics) { + return processMetrics.isIdle.get() ? 1 : 0; + } + }