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;
+  }
+
 }

Reply via email to