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

albumenj pushed a commit to branch 3.2
in repository https://gitbox.apache.org/repos/asf/dubbo.git


The following commit(s) were added to refs/heads/3.2 by this push:
     new 4c4bcb7a25 Support disable metrics init and sync (#13025)
4c4bcb7a25 is described below

commit 4c4bcb7a253f4f7ed9db20ae919f248a3d5397c0
Author: Albumen Kevin <[email protected]>
AuthorDate: Sun Sep 10 17:18:22 2023 +0800

    Support disable metrics init and sync (#13025)
---
 .../dubbo/common/constants/MetricsConstants.java   |  8 ++++---
 .../org/apache/dubbo/config/MetricsConfig.java     | 26 ++++++++++++++++++++++
 .../config/deploy/DefaultApplicationDeployer.java  |  1 +
 .../metrics/collector/DefaultMetricsCollector.java | 14 ++++++++++++
 .../metrics/report/AbstractMetricsReporter.java    | 18 +++++++++------
 5 files changed, 57 insertions(+), 10 deletions(-)

diff --git 
a/dubbo-common/src/main/java/org/apache/dubbo/common/constants/MetricsConstants.java
 
b/dubbo-common/src/main/java/org/apache/dubbo/common/constants/MetricsConstants.java
index e7805eaa32..4c4437d427 100644
--- 
a/dubbo-common/src/main/java/org/apache/dubbo/common/constants/MetricsConstants.java
+++ 
b/dubbo-common/src/main/java/org/apache/dubbo/common/constants/MetricsConstants.java
@@ -40,15 +40,17 @@ public interface MetricsConstants {
     String TAG_VERSION_KEY = "version";
 
     String TAG_APPLICATION_VERSION_KEY = "application.version";
-    
+
     String TAG_KEY_KEY = "key";
-    
+
     String TAG_CONFIG_CENTER = "config.center";
-    
+
     String TAG_CHANGE_TYPE = "change.type";
 
     String ENABLE_JVM_METRICS_KEY = "enable.jvm";
 
+    String ENABLE_COLLECTOR_SYNC_KEY = "enable.collector.sync";
+
     String AGGREGATION_COLLECTOR_KEY = "aggregation";
 
     String AGGREGATION_ENABLED_KEY = "aggregation.enabled";
diff --git 
a/dubbo-common/src/main/java/org/apache/dubbo/config/MetricsConfig.java 
b/dubbo-common/src/main/java/org/apache/dubbo/config/MetricsConfig.java
index 067833b2b0..129391af72 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/config/MetricsConfig.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/config/MetricsConfig.java
@@ -61,6 +61,16 @@ public class MetricsConfig extends AbstractConfig {
      */
     private Boolean exportMetricsService;
 
+    /**
+     * Enable metrics init.
+     */
+    private Boolean enableMetricsInit;
+
+    /**
+     * Enable collector sync.
+     */
+    private Boolean enableCollectorSync;
+
     /**
      * @deprecated After metrics config is refactored.
      * This parameter should no longer use and will be deleted in the future.
@@ -208,6 +218,22 @@ public class MetricsConfig extends AbstractConfig {
         this.enableThreadpool = enableThreadpool;
     }
 
+    public Boolean getEnableMetricsInit() {
+        return enableMetricsInit;
+    }
+
+    public void setEnableMetricsInit(Boolean enableMetricsInit) {
+        this.enableMetricsInit = enableMetricsInit;
+    }
+
+    public Boolean getEnableCollectorSync() {
+        return enableCollectorSync;
+    }
+
+    public void setEnableCollectorSync(Boolean enableCollectorSync) {
+        this.enableCollectorSync = enableCollectorSync;
+    }
+
     public Boolean getUseGlobalRegistry() {
         return useGlobalRegistry;
     }
diff --git 
a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/deploy/DefaultApplicationDeployer.java
 
b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/deploy/DefaultApplicationDeployer.java
index b075acaa44..55662b24b0 100644
--- 
a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/deploy/DefaultApplicationDeployer.java
+++ 
b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/deploy/DefaultApplicationDeployer.java
@@ -385,6 +385,7 @@ public class DefaultApplicationDeployer extends 
AbstractDeployer<ApplicationMode
         collector.setCollectEnabled(true);
         collector.collectApplication();
         
collector.setThreadpoolCollectEnabled(Optional.ofNullable(metricsConfig.getEnableThreadpool()).orElse(true));
+        
collector.setMetricsInitEnabled(Optional.ofNullable(metricsConfig.getEnableMetricsInit()).orElse(true));
         MetricsReporterFactory metricsReporterFactory = 
getExtensionLoader(MetricsReporterFactory.class).getAdaptiveExtension();
         MetricsReporter metricsReporter = null;
         try {
diff --git 
a/dubbo-metrics/dubbo-metrics-default/src/main/java/org/apache/dubbo/metrics/collector/DefaultMetricsCollector.java
 
b/dubbo-metrics/dubbo-metrics-default/src/main/java/org/apache/dubbo/metrics/collector/DefaultMetricsCollector.java
index ca03be45b2..9d04633260 100644
--- 
a/dubbo-metrics/dubbo-metrics-default/src/main/java/org/apache/dubbo/metrics/collector/DefaultMetricsCollector.java
+++ 
b/dubbo-metrics/dubbo-metrics-default/src/main/java/org/apache/dubbo/metrics/collector/DefaultMetricsCollector.java
@@ -60,6 +60,9 @@ public class DefaultMetricsCollector extends 
CombMetricsCollector<RequestEvent>
     private boolean collectEnabled = false;
 
     private volatile boolean threadpoolCollectEnabled = false;
+
+    private volatile boolean metricsInitEnabled = true;
+
     private final ThreadPoolMetricsSampler threadPoolSampler = new 
ThreadPoolMetricsSampler(this);
     private String applicationName;
     private final ApplicationModel applicationModel;
@@ -123,6 +126,14 @@ public class DefaultMetricsCollector extends 
CombMetricsCollector<RequestEvent>
         this.threadpoolCollectEnabled = threadpoolCollectEnabled;
     }
 
+    public boolean isMetricsInitEnabled() {
+        return metricsInitEnabled;
+    }
+
+    public void setMetricsInitEnabled(boolean metricsInitEnabled) {
+        this.metricsInitEnabled = metricsInitEnabled;
+    }
+
     public void collectApplication() {
         this.setApplicationName(applicationModel.getApplicationName());
         applicationSampler.inc(applicationName, 
MetricsEvent.Type.APPLICATION_INFO);
@@ -155,6 +166,9 @@ public class DefaultMetricsCollector extends 
CombMetricsCollector<RequestEvent>
     @Override
     public void onEvent(TimeCounterEvent event) {
         if(event instanceof MetricsInitEvent){
+            if (!metricsInitEnabled) {
+                return;
+            }
             if(initialized.compareAndSet(false,true)) {
                 
collectors.addAll(applicationModel.getBeanFactory().getBeansOfType(MetricsCollector.class));
             }
diff --git 
a/dubbo-metrics/dubbo-metrics-default/src/main/java/org/apache/dubbo/metrics/report/AbstractMetricsReporter.java
 
b/dubbo-metrics/dubbo-metrics-default/src/main/java/org/apache/dubbo/metrics/report/AbstractMetricsReporter.java
index c6eb309b36..13c8cecdc4 100644
--- 
a/dubbo-metrics/dubbo-metrics-default/src/main/java/org/apache/dubbo/metrics/report/AbstractMetricsReporter.java
+++ 
b/dubbo-metrics/dubbo-metrics-default/src/main/java/org/apache/dubbo/metrics/report/AbstractMetricsReporter.java
@@ -17,26 +17,26 @@
 
 package org.apache.dubbo.metrics.report;
 
-import io.micrometer.core.instrument.FunctionCounter;
-import io.micrometer.core.instrument.binder.MeterBinder;
 import org.apache.dubbo.common.URL;
 import org.apache.dubbo.common.beans.factory.ScopeBeanFactory;
 import org.apache.dubbo.common.lang.ShutdownHookCallbacks;
 import org.apache.dubbo.common.logger.ErrorTypeAwareLogger;
 import org.apache.dubbo.common.logger.LoggerFactory;
-import org.apache.dubbo.metrics.MetricsGlobalRegistry;
 import org.apache.dubbo.common.utils.NamedThreadFactory;
+import org.apache.dubbo.metrics.MetricsGlobalRegistry;
 import org.apache.dubbo.metrics.collector.AggregateMetricsCollector;
-import org.apache.dubbo.metrics.collector.MetricsCollector;
 import org.apache.dubbo.metrics.collector.HistogramMetricsCollector;
+import org.apache.dubbo.metrics.collector.MetricsCollector;
 import org.apache.dubbo.metrics.model.sample.CounterMetricSample;
 import org.apache.dubbo.metrics.model.sample.GaugeMetricSample;
 import org.apache.dubbo.metrics.model.sample.MetricSample;
 import org.apache.dubbo.rpc.model.ApplicationModel;
 
+import io.micrometer.core.instrument.FunctionCounter;
 import io.micrometer.core.instrument.Gauge;
 import io.micrometer.core.instrument.MeterRegistry;
 import io.micrometer.core.instrument.Tag;
+import io.micrometer.core.instrument.binder.MeterBinder;
 import io.micrometer.core.instrument.binder.jvm.ClassLoaderMetrics;
 import io.micrometer.core.instrument.binder.jvm.JvmGcMetrics;
 import io.micrometer.core.instrument.binder.jvm.JvmMemoryMetrics;
@@ -53,6 +53,7 @@ import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicBoolean;
 
 import static 
org.apache.dubbo.common.constants.LoggerCodeConstants.COMMON_METRICS_COLLECTOR_EXCEPTION;
+import static 
org.apache.dubbo.common.constants.MetricsConstants.ENABLE_COLLECTOR_SYNC_KEY;
 import static 
org.apache.dubbo.common.constants.MetricsConstants.ENABLE_JVM_METRICS_KEY;
 
 /**
@@ -140,9 +141,12 @@ public abstract class AbstractMetricsReporter implements 
MetricsReporter {
     }
 
     private void scheduleMetricsCollectorSyncJob() {
-        NamedThreadFactory threadFactory = new 
NamedThreadFactory("metrics-collector-sync-job", true);
-        collectorSyncJobExecutor = Executors.newScheduledThreadPool(1, 
threadFactory);
-        collectorSyncJobExecutor.scheduleWithFixedDelay(this::refreshData, 
DEFAULT_SCHEDULE_INITIAL_DELAY, DEFAULT_SCHEDULE_PERIOD, TimeUnit.SECONDS);
+        boolean enableCollectorSync = 
url.getParameter(ENABLE_COLLECTOR_SYNC_KEY, true);
+        if (enableCollectorSync) {
+            NamedThreadFactory threadFactory = new 
NamedThreadFactory("metrics-collector-sync-job", true);
+            collectorSyncJobExecutor = Executors.newScheduledThreadPool(1, 
threadFactory);
+            collectorSyncJobExecutor.scheduleWithFixedDelay(this::refreshData, 
DEFAULT_SCHEDULE_INITIAL_DELAY, DEFAULT_SCHEDULE_PERIOD, TimeUnit.SECONDS);
+        }
     }
 
     @SuppressWarnings({"unchecked", "rawtypes"})

Reply via email to