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 <[email protected]>
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;
+ }
+
}