mirror of
https://github.com/vacp2p/status-linea-besu.git
synced 2026-01-08 15:03:52 -05:00
Shutdown MetricsSystem when stopping MetricsService (#7958)
Signed-off-by: Fabio Di Fabio <fabio.difabio@consensys.net>
This commit is contained in:
@@ -15,6 +15,7 @@
|
||||
package org.hyperledger.besu.metrics;
|
||||
|
||||
import org.hyperledger.besu.metrics.opentelemetry.MetricsOtelPushService;
|
||||
import org.hyperledger.besu.metrics.opentelemetry.OpenTelemetrySystem;
|
||||
import org.hyperledger.besu.metrics.prometheus.MetricsConfiguration;
|
||||
import org.hyperledger.besu.metrics.prometheus.MetricsHttpService;
|
||||
import org.hyperledger.besu.metrics.prometheus.MetricsPushGatewayService;
|
||||
@@ -48,13 +49,14 @@ public interface MetricsService {
|
||||
return Optional.of(
|
||||
new MetricsHttpService(configuration, (PrometheusMetricsSystem) metricsSystem));
|
||||
} else if (configuration.isPushEnabled()) {
|
||||
return Optional.of(new MetricsPushGatewayService(configuration, metricsSystem));
|
||||
return Optional.of(
|
||||
new MetricsPushGatewayService(configuration, (PrometheusMetricsSystem) metricsSystem));
|
||||
} else {
|
||||
return Optional.empty();
|
||||
}
|
||||
} else if (configuration.getProtocol() == MetricsProtocol.OPENTELEMETRY) {
|
||||
if (configuration.isEnabled()) {
|
||||
return Optional.of(new MetricsOtelPushService());
|
||||
return Optional.of(new MetricsOtelPushService((OpenTelemetrySystem) metricsSystem));
|
||||
} else {
|
||||
return Optional.empty();
|
||||
}
|
||||
|
||||
@@ -26,9 +26,16 @@ import org.slf4j.LoggerFactory;
|
||||
public class MetricsOtelPushService implements MetricsService {
|
||||
|
||||
private static final Logger LOG = LoggerFactory.getLogger(MetricsOtelPushService.class);
|
||||
private final OpenTelemetrySystem metricsSystem;
|
||||
|
||||
/** Instantiates a new Metrics open telemetry push service. */
|
||||
public MetricsOtelPushService() {}
|
||||
/**
|
||||
* Instantiates a new Metrics open telemetry push service.
|
||||
*
|
||||
* @param metricsSystem The OpenTelemetry metrics system
|
||||
*/
|
||||
public MetricsOtelPushService(final OpenTelemetrySystem metricsSystem) {
|
||||
this.metricsSystem = metricsSystem;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<?> start() {
|
||||
@@ -39,6 +46,7 @@ public class MetricsOtelPushService implements MetricsService {
|
||||
|
||||
@Override
|
||||
public CompletableFuture<?> stop() {
|
||||
metricsSystem.shutdown();
|
||||
return CompletableFuture.completedFuture(null);
|
||||
}
|
||||
|
||||
|
||||
@@ -121,6 +121,7 @@ public class MetricsHttpService implements MetricsService {
|
||||
|
||||
@Override
|
||||
public CompletableFuture<?> stop() {
|
||||
metricsSystem.shutdown();
|
||||
if (httpServer == null) {
|
||||
return CompletableFuture.completedFuture(null);
|
||||
}
|
||||
|
||||
@@ -17,7 +17,6 @@ package org.hyperledger.besu.metrics.prometheus;
|
||||
import static com.google.common.base.Preconditions.checkArgument;
|
||||
|
||||
import org.hyperledger.besu.metrics.MetricsService;
|
||||
import org.hyperledger.besu.plugin.services.MetricsSystem;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Optional;
|
||||
@@ -37,7 +36,7 @@ public class MetricsPushGatewayService implements MetricsService {
|
||||
private PushGateway pushGateway;
|
||||
private ScheduledExecutorService scheduledExecutorService;
|
||||
private final MetricsConfiguration config;
|
||||
private final MetricsSystem metricsSystem;
|
||||
private final PrometheusMetricsSystem metricsSystem;
|
||||
|
||||
/**
|
||||
* Instantiates a new Metrics push gateway service.
|
||||
@@ -46,7 +45,7 @@ public class MetricsPushGatewayService implements MetricsService {
|
||||
* @param metricsSystem the metrics system
|
||||
*/
|
||||
public MetricsPushGatewayService(
|
||||
final MetricsConfiguration configuration, final MetricsSystem metricsSystem) {
|
||||
final MetricsConfiguration configuration, final PrometheusMetricsSystem metricsSystem) {
|
||||
this.metricsSystem = metricsSystem;
|
||||
validateConfig(configuration);
|
||||
config = configuration;
|
||||
@@ -59,9 +58,6 @@ public class MetricsPushGatewayService implements MetricsService {
|
||||
checkArgument(
|
||||
!(config.isEnabled() && config.isPushEnabled()),
|
||||
"Metrics Push Gateway Service cannot run concurrent with the normal metrics.");
|
||||
checkArgument(
|
||||
metricsSystem instanceof PrometheusMetricsSystem,
|
||||
"Push Gateway requires a Prometheus Metrics System.");
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -73,7 +69,7 @@ public class MetricsPushGatewayService implements MetricsService {
|
||||
|
||||
pushGateway =
|
||||
PushGateway.builder()
|
||||
.registry(((PrometheusMetricsSystem) metricsSystem).getRegistry())
|
||||
.registry(metricsSystem.getRegistry())
|
||||
.address(config.getPushHost() + ":" + config.getPushPort())
|
||||
.job(config.getPrometheusJob())
|
||||
.build();
|
||||
@@ -90,6 +86,7 @@ public class MetricsPushGatewayService implements MetricsService {
|
||||
|
||||
@Override
|
||||
public CompletableFuture<?> stop() {
|
||||
metricsSystem.shutdown();
|
||||
final CompletableFuture<?> resultFuture = new CompletableFuture<>();
|
||||
try {
|
||||
// Calling shutdown now cancels the pending push, which is desirable.
|
||||
|
||||
Reference in New Issue
Block a user