jonvex commented on code in PR #7934:
URL: https://github.com/apache/hudi/pull/7934#discussion_r1108902799


##########
hudi-client/hudi-client-common/src/main/java/org/apache/hudi/metrics/Metrics.java:
##########
@@ -52,75 +52,62 @@ private Metrics(HoodieWriteConfig metricConfig) {
     }
     reporter.start();
 
-    Runtime.getRuntime().addShutdownHook(new Thread(Metrics::shutdown));
+    Runtime.getRuntime().addShutdownHook(new Thread(this::shutdown));
+    this.initialized = true;
   }
 
-  private void reportAndStopReporter() {
-    try {
-      registerHoodieCommonMetrics();
-      reporter.report();
-      LOG.info("Stopping the metrics reporter...");
-      reporter.stop();
-    } catch (Exception e) {
-      LOG.warn("Error while closing reporter", e);
-    }
+  private void registerHoodieCommonMetrics() {
+    registerGauges(Registry.getAllMetrics(true, true), 
Option.of(commonMetricPrefix));
   }
 
-  private void reportAndFlushMetrics() {
-    try {
-      LOG.info("Reporting and flushing all metrics");
-      this.registerHoodieCommonMetrics();
-      this.reporter.report();
-      this.registry.getNames().forEach(this.registry::remove);
-    } catch (Exception e) {
-      LOG.error("Error while reporting and flushing metrics", e);
+  public static synchronized Metrics getInstance(HoodieWriteConfig 
metricConfig) {
+    String basePath = metricConfig.getBasePath();
+    if (METRICS_INSTANCE_PER_BASEPATH.containsKey(basePath)) {
+      return METRICS_INSTANCE_PER_BASEPATH.get(basePath);
     }
-  }
 
-  private void registerHoodieCommonMetrics() {
-    registerGauges(Registry.getAllMetrics(true, true), 
Option.of(commonMetricPrefix));
+    Metrics metrics = new Metrics(metricConfig);
+    METRICS_INSTANCE_PER_BASEPATH.put(basePath, metrics);
+    return metrics;
   }
 
-  public static Metrics getInstance() {
-    assert initialized;
-    return instance;
+  public static synchronized void shutdownAllMetrics() {
+    METRICS_INSTANCE_PER_BASEPATH.values().forEach(Metrics::shutdown);
   }
 
-  public static synchronized void init(HoodieWriteConfig metricConfig) {
-    if (initialized) {
-      return;
-    }
+  public synchronized void shutdown() {
     try {
-      instance = new Metrics(metricConfig);
+      registerHoodieCommonMetrics();
+      reporter.report();
+      LOG.info("Stopping the metrics reporter...");
+      if (reporter != null) {

Review Comment:
   Yeah that's not needed



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to