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 <17555551+jackie-ji...@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-unsubscr...@pinot.apache.org For additional commands, e-mail: commits-h...@pinot.apache.org