You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pinot.apache.org by ja...@apache.org on 2023/12/08 02:52:39 UTC

(pinot) branch master updated: Add singleton registry for all metrics (#12119)

This is an automated email from the ASF dual-hosted git repository.

jackie pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pinot.git


The following commit(s) were added to refs/heads/master by this push:
     new 56ecafc17e Add singleton registry for all metrics (#12119)
56ecafc17e is described below

commit 56ecafc17e141b4cd9404255452b654231cc1247
Author: Xiaotian (Jackie) Jiang <17...@users.noreply.github.com>
AuthorDate: Thu Dec 7 18:52:32 2023 -0800

    Add singleton registry for all metrics (#12119)
---
 .../org/apache/pinot/common/metrics/ControllerMetrics.java     | 10 ++++++++++
 .../java/org/apache/pinot/common/metrics/MinionMetrics.java    | 10 ++++++++++
 .../org/apache/pinot/controller/BaseControllerStarter.java     |  1 +
 .../tests/plugin/minion/tasks/TestTaskExecutorFactory.java     |  3 ++-
 .../main/java/org/apache/pinot/minion/BaseMinionStarter.java   |  1 +
 .../src/main/java/org/apache/pinot/minion/MinionContext.java   |  2 ++
 .../apache/pinot/minion/taskfactory/TaskFactoryRegistry.java   |  2 +-
 .../minion/tasks/BaseSingleSegmentConversionExecutor.java      |  4 ++--
 8 files changed, 29 insertions(+), 4 deletions(-)

diff --git a/pinot-common/src/main/java/org/apache/pinot/common/metrics/ControllerMetrics.java b/pinot-common/src/main/java/org/apache/pinot/common/metrics/ControllerMetrics.java
index 2843d7493c..d7e75ca54c 100644
--- a/pinot-common/src/main/java/org/apache/pinot/common/metrics/ControllerMetrics.java
+++ b/pinot-common/src/main/java/org/apache/pinot/common/metrics/ControllerMetrics.java
@@ -18,6 +18,7 @@
  */
 package org.apache.pinot.common.metrics;
 
+import java.util.concurrent.atomic.AtomicReference;
 import org.apache.pinot.spi.metrics.PinotMetricsRegistry;
 
 import static org.apache.pinot.spi.utils.CommonConstants.Controller.DEFAULT_METRICS_PREFIX;
@@ -28,6 +29,15 @@ import static org.apache.pinot.spi.utils.CommonConstants.Controller.DEFAULT_METR
  */
 public class ControllerMetrics
     extends AbstractMetrics<AbstractMetrics.QueryPhase, ControllerMeter, ControllerGauge, ControllerTimer> {
+  private static final AtomicReference<ControllerMetrics> CONTROLLER_METRICS_INSTANCE = new AtomicReference<>();
+
+  public static boolean register(ControllerMetrics controllerMetrics) {
+    return CONTROLLER_METRICS_INSTANCE.compareAndSet(null, controllerMetrics);
+  }
+
+  public static ControllerMetrics get() {
+    return CONTROLLER_METRICS_INSTANCE.get();
+  }
 
   public ControllerMetrics(PinotMetricsRegistry metricsRegistry) {
     this(DEFAULT_METRICS_PREFIX, metricsRegistry);
diff --git a/pinot-common/src/main/java/org/apache/pinot/common/metrics/MinionMetrics.java b/pinot-common/src/main/java/org/apache/pinot/common/metrics/MinionMetrics.java
index 9df006eb06..d716523e9d 100644
--- a/pinot-common/src/main/java/org/apache/pinot/common/metrics/MinionMetrics.java
+++ b/pinot-common/src/main/java/org/apache/pinot/common/metrics/MinionMetrics.java
@@ -18,11 +18,21 @@
  */
 package org.apache.pinot.common.metrics;
 
+import java.util.concurrent.atomic.AtomicReference;
 import org.apache.pinot.spi.metrics.PinotMetricsRegistry;
 import org.apache.pinot.spi.utils.CommonConstants;
 
 
 public class MinionMetrics extends AbstractMetrics<MinionQueryPhase, MinionMeter, MinionGauge, MinionTimer> {
+  private static final AtomicReference<MinionMetrics> MINION_METRICS_INSTANCE = new AtomicReference<>();
+
+  public static boolean register(MinionMetrics minionMetrics) {
+    return MINION_METRICS_INSTANCE.compareAndSet(null, minionMetrics);
+  }
+
+  public static MinionMetrics get() {
+    return MINION_METRICS_INSTANCE.get();
+  }
 
   public MinionMetrics(PinotMetricsRegistry metricsRegistry) {
     this(CommonConstants.Minion.CONFIG_OF_METRICS_PREFIX, metricsRegistry);
diff --git a/pinot-controller/src/main/java/org/apache/pinot/controller/BaseControllerStarter.java b/pinot-controller/src/main/java/org/apache/pinot/controller/BaseControllerStarter.java
index 2093aab0b4..281c397401 100644
--- a/pinot-controller/src/main/java/org/apache/pinot/controller/BaseControllerStarter.java
+++ b/pinot-controller/src/main/java/org/apache/pinot/controller/BaseControllerStarter.java
@@ -691,6 +691,7 @@ public abstract class BaseControllerStarter implements ServiceStartable {
     _controllerMetrics = new ControllerMetrics(_config.getMetricsPrefix(), _metricsRegistry);
     _controllerMetrics.initializeGlobalMeters();
     _controllerMetrics.setValueOfGlobalGauge(ControllerGauge.VERSION, PinotVersion.VERSION_METRIC_NAME, 1);
+    ControllerMetrics.register(_controllerMetrics);
     _validationMetrics = new ValidationMetrics(_metricsRegistry);
   }
 
diff --git a/pinot-integration-tests/src/test/java/org/apache/pinot/integration/tests/plugin/minion/tasks/TestTaskExecutorFactory.java b/pinot-integration-tests/src/test/java/org/apache/pinot/integration/tests/plugin/minion/tasks/TestTaskExecutorFactory.java
index 47d861021a..ac3cb33ea7 100644
--- a/pinot-integration-tests/src/test/java/org/apache/pinot/integration/tests/plugin/minion/tasks/TestTaskExecutorFactory.java
+++ b/pinot-integration-tests/src/test/java/org/apache/pinot/integration/tests/plugin/minion/tasks/TestTaskExecutorFactory.java
@@ -20,6 +20,7 @@ package org.apache.pinot.integration.tests.plugin.minion.tasks;
 
 import java.util.Map;
 import org.apache.pinot.common.metadata.segment.SegmentZKMetadataCustomMapModifier;
+import org.apache.pinot.common.metrics.MinionMetrics;
 import org.apache.pinot.core.minion.PinotTaskConfig;
 import org.apache.pinot.integration.tests.SimpleMinionClusterIntegrationTest;
 import org.apache.pinot.minion.MinionConf;
@@ -63,8 +64,8 @@ public class TestTaskExecutorFactory implements PinotTaskExecutorFactory {
       @Override
       public Boolean executeTask(PinotTaskConfig pinotTaskConfig) {
         assertTrue(MINION_CONTEXT.getDataDir().exists());
-        assertNotNull(MINION_CONTEXT.getMinionMetrics());
         assertNotNull(MINION_CONTEXT.getHelixPropertyStore());
+        assertNotNull(MinionMetrics.get());
 
         assertEquals(pinotTaskConfig.getTaskType(), SimpleMinionClusterIntegrationTest.TASK_TYPE);
         Map<String, String> configs = pinotTaskConfig.getConfigs();
diff --git a/pinot-minion/src/main/java/org/apache/pinot/minion/BaseMinionStarter.java b/pinot-minion/src/main/java/org/apache/pinot/minion/BaseMinionStarter.java
index 6e67e0c163..e966e517a2 100644
--- a/pinot-minion/src/main/java/org/apache/pinot/minion/BaseMinionStarter.java
+++ b/pinot-minion/src/main/java/org/apache/pinot/minion/BaseMinionStarter.java
@@ -191,6 +191,7 @@ public abstract class BaseMinionStarter implements ServiceStartable {
     MinionMetrics minionMetrics = new MinionMetrics(_config.getMetricsPrefix(), metricsRegistry);
     minionMetrics.initializeGlobalMeters();
     minionMetrics.setValueOfGlobalGauge(MinionGauge.VERSION, PinotVersion.VERSION_METRIC_NAME, 1);
+    MinionMetrics.register(minionMetrics);
     minionContext.setMinionMetrics(minionMetrics);
 
     // Install default SSL context if necessary (even if not force-enabled everywhere)
diff --git a/pinot-minion/src/main/java/org/apache/pinot/minion/MinionContext.java b/pinot-minion/src/main/java/org/apache/pinot/minion/MinionContext.java
index 8b6e0dc4c9..d9cbd8f6f5 100644
--- a/pinot-minion/src/main/java/org/apache/pinot/minion/MinionContext.java
+++ b/pinot-minion/src/main/java/org/apache/pinot/minion/MinionContext.java
@@ -62,10 +62,12 @@ public class MinionContext {
     _dataDir = dataDir;
   }
 
+  @Deprecated
   public MinionMetrics getMinionMetrics() {
     return _minionMetrics;
   }
 
+  @Deprecated
   public void setMinionMetrics(MinionMetrics minionMetrics) {
     _minionMetrics = minionMetrics;
   }
diff --git a/pinot-minion/src/main/java/org/apache/pinot/minion/taskfactory/TaskFactoryRegistry.java b/pinot-minion/src/main/java/org/apache/pinot/minion/taskfactory/TaskFactoryRegistry.java
index 6faf168323..00f4bbeac5 100644
--- a/pinot-minion/src/main/java/org/apache/pinot/minion/taskfactory/TaskFactoryRegistry.java
+++ b/pinot-minion/src/main/java/org/apache/pinot/minion/taskfactory/TaskFactoryRegistry.java
@@ -87,7 +87,7 @@ public class TaskFactoryRegistry {
             private final TaskConfig _taskConfig = context.getTaskConfig();
             private final PinotTaskExecutor _taskExecutor = taskExecutorFactory.create();
             private final MinionEventObserver _eventObserver = eventObserverFactory.create();
-            private final MinionMetrics _minionMetrics = MinionContext.getInstance().getMinionMetrics();
+            private final MinionMetrics _minionMetrics = MinionMetrics.get();
 
             @Override
             public TaskResult run() {
diff --git a/pinot-plugins/pinot-minion-tasks/pinot-minion-builtin-tasks/src/main/java/org/apache/pinot/plugin/minion/tasks/BaseSingleSegmentConversionExecutor.java b/pinot-plugins/pinot-minion-tasks/pinot-minion-builtin-tasks/src/main/java/org/apache/pinot/plugin/minion/tasks/BaseSingleSegmentConversionExecutor.java
index 001ce26d46..22337ada6b 100644
--- a/pinot-plugins/pinot-minion-tasks/pinot-minion-builtin-tasks/src/main/java/org/apache/pinot/plugin/minion/tasks/BaseSingleSegmentConversionExecutor.java
+++ b/pinot-plugins/pinot-minion-tasks/pinot-minion-builtin-tasks/src/main/java/org/apache/pinot/plugin/minion/tasks/BaseSingleSegmentConversionExecutor.java
@@ -42,7 +42,6 @@ import org.apache.pinot.common.utils.TarGzCompressionUtils;
 import org.apache.pinot.common.utils.fetcher.SegmentFetcherFactory;
 import org.apache.pinot.core.common.MinionConstants;
 import org.apache.pinot.core.minion.PinotTaskConfig;
-import org.apache.pinot.minion.MinionContext;
 import org.apache.pinot.minion.event.MinionEventObserver;
 import org.apache.pinot.minion.event.MinionEventObservers;
 import org.apache.pinot.minion.exception.TaskCancelledException;
@@ -61,10 +60,11 @@ import org.slf4j.LoggerFactory;
 public abstract class BaseSingleSegmentConversionExecutor extends BaseTaskExecutor {
   private static final Logger LOGGER = LoggerFactory.getLogger(BaseSingleSegmentConversionExecutor.class);
 
+  protected final MinionMetrics _minionMetrics = MinionMetrics.get();
+
   // Tracking finer grained progress status.
   protected PinotTaskConfig _pinotTaskConfig;
   protected MinionEventObserver _eventObserver;
-  protected final MinionMetrics _minionMetrics = MinionContext.getInstance().getMinionMetrics();
 
   /**
    * Converts the segment based on the given task config and returns the conversion result.


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org