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