You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hudi.apache.org by vi...@apache.org on 2020/10/30 05:33:39 UTC
[hudi] 09/14: [HUDI-1305] Added an API to shutdown and remove the
metrics reporter. (#2132)
This is an automated email from the ASF dual-hosted git repository.
vinoth pushed a commit to branch rfc-15
in repository https://gitbox.apache.org/repos/asf/hudi.git
commit 86fdd659d899b74dab3cc1eb0965d90fc78ea554
Author: Prashant Wason <pw...@uber.com>
AuthorDate: Sun Oct 4 09:30:04 2020 -0700
[HUDI-1305] Added an API to shutdown and remove the metrics reporter. (#2132)
This helps in removing reporter once the test has complete. Prevents log pollution from un-necessary metric logs.
- Added an API to shutdown the metrics reporter after tests.
---
.../hudi/metrics/ConsoleMetricsReporter.java | 3 +++
.../main/java/org/apache/hudi/metrics/Metrics.java | 30 +++++++++++++++-------
.../hudi/metrics/TestHoodieConsoleMetrics.java | 6 +++++
3 files changed, 30 insertions(+), 9 deletions(-)
diff --git a/hudi-client/src/main/java/org/apache/hudi/metrics/ConsoleMetricsReporter.java b/hudi-client/src/main/java/org/apache/hudi/metrics/ConsoleMetricsReporter.java
index ca96109..b65c4ad 100644
--- a/hudi-client/src/main/java/org/apache/hudi/metrics/ConsoleMetricsReporter.java
+++ b/hudi-client/src/main/java/org/apache/hudi/metrics/ConsoleMetricsReporter.java
@@ -68,5 +68,8 @@ public class ConsoleMetricsReporter extends MetricsReporter {
@Override
public void stop() {
+ if (consoleReporter != null) {
+ consoleReporter.stop();
+ }
}
}
diff --git a/hudi-client/src/main/java/org/apache/hudi/metrics/Metrics.java b/hudi-client/src/main/java/org/apache/hudi/metrics/Metrics.java
index a9cf14e..c4107ce 100644
--- a/hudi-client/src/main/java/org/apache/hudi/metrics/Metrics.java
+++ b/hudi-client/src/main/java/org/apache/hudi/metrics/Metrics.java
@@ -52,18 +52,22 @@ public class Metrics {
reporter.start();
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
- try {
- registerHoodieCommonMetrics();
- reporter.report();
- if (getReporter() != null) {
- getReporter().close();
- }
- } catch (Exception e) {
- LOG.warn("Error while closing reporter", e);
- }
+ reportAndCloseReporter();
}));
}
+ private void reportAndCloseReporter() {
+ try {
+ registerHoodieCommonMetrics();
+ reporter.report();
+ if (getReporter() != null) {
+ getReporter().close();
+ }
+ } catch (Exception e) {
+ LOG.warn("Error while closing reporter", e);
+ }
+ }
+
private void registerHoodieCommonMetrics() {
registerGauges(Registry.getAllMetrics(true, true), Option.empty());
}
@@ -85,6 +89,14 @@ public class Metrics {
initialized = true;
}
+ public static synchronized void shutdown() {
+ if (!initialized) {
+ return;
+ }
+ metrics.reportAndCloseReporter();
+ initialized = false;
+ }
+
public static void registerGauges(Map<String, Long> metricsMap, Option<String> prefix) {
String metricPrefix = prefix.isPresent() ? prefix.get() + "." : "";
metricsMap.forEach((k, v) -> registerGauge(metricPrefix + k, v));
diff --git a/hudi-client/src/test/java/org/apache/hudi/metrics/TestHoodieConsoleMetrics.java b/hudi-client/src/test/java/org/apache/hudi/metrics/TestHoodieConsoleMetrics.java
index e644730..7424d0b 100644
--- a/hudi-client/src/test/java/org/apache/hudi/metrics/TestHoodieConsoleMetrics.java
+++ b/hudi-client/src/test/java/org/apache/hudi/metrics/TestHoodieConsoleMetrics.java
@@ -19,6 +19,7 @@
package org.apache.hudi.metrics;
import org.apache.hudi.config.HoodieWriteConfig;
+import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -38,6 +39,11 @@ public class TestHoodieConsoleMetrics {
new HoodieMetrics(config, "raw_table");
}
+ @AfterEach
+ public void stop() {
+ Metrics.shutdown();
+ }
+
@Test
public void testRegisterGauge() {
registerGauge("metric1", 123L);