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 8474bf5415 Temporally remove fill zero in metrics due to performance 
issue (#12624)
8474bf5415 is described below

commit 8474bf5415c6a7e76f0d9a9682399c9fa34d8a1e
Author: Albumen Kevin <[email protected]>
AuthorDate: Thu Jun 29 21:31:02 2023 +0800

    Temporally remove fill zero in metrics due to performance issue (#12624)
    
    * Temporally remove fill zero in metrics due to performance issue
    
    * fix uts
    
    * fix uts
---
 .../dubbo/metrics/data/MethodStatComposite.java       |  3 +--
 .../dubbo/metrics/data/ServiceStatComposite.java      |  5 ++---
 .../dubbo/metrics/collector/DefaultCollectorTest.java |  8 ++++----
 .../dubbo/metrics/filter/MetricsFilterTest.java       | 11 ++++++-----
 .../metadata/MetadataMetricsCollectorTest.java        |  5 +++--
 .../collector/RegistryMetricsCollectorTest.java       | 19 ++++++++++---------
 6 files changed, 26 insertions(+), 25 deletions(-)

diff --git 
a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/data/MethodStatComposite.java
 
b/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/data/MethodStatComposite.java
index a4c6bba709..d7d5858a16 100644
--- 
a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/data/MethodStatComposite.java
+++ 
b/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/data/MethodStatComposite.java
@@ -23,7 +23,6 @@ import org.apache.dubbo.common.utils.CollectionUtils;
 import org.apache.dubbo.metrics.exception.MetricsNeverHappenException;
 import org.apache.dubbo.metrics.model.MethodMetric;
 import org.apache.dubbo.metrics.model.MetricsCategory;
-import org.apache.dubbo.metrics.model.MetricsSupport;
 import org.apache.dubbo.metrics.model.key.MetricsKeyWrapper;
 import org.apache.dubbo.metrics.model.sample.CounterMetricSample;
 import org.apache.dubbo.metrics.model.sample.GaugeMetricSample;
@@ -65,7 +64,7 @@ public class MethodStatComposite extends 
AbstractMetricsExport {
             return;
         }
         methodNumStats.get(wrapper).computeIfAbsent(new 
MethodMetric(getApplicationModel(), invocation), k -> new 
AtomicLong(0L)).getAndAdd(size);
-        MetricsSupport.fillZero(methodNumStats);
+//        MetricsSupport.fillZero(methodNumStats);
     }
 
     public List<MetricSample> export(MetricsCategory category) {
diff --git 
a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/data/ServiceStatComposite.java
 
b/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/data/ServiceStatComposite.java
index 797270300c..3399541c42 100644
--- 
a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/data/ServiceStatComposite.java
+++ 
b/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/data/ServiceStatComposite.java
@@ -19,7 +19,6 @@ package org.apache.dubbo.metrics.data;
 
 import org.apache.dubbo.common.utils.CollectionUtils;
 import org.apache.dubbo.metrics.model.MetricsCategory;
-import org.apache.dubbo.metrics.model.MetricsSupport;
 import org.apache.dubbo.metrics.model.ServiceKeyMetric;
 import org.apache.dubbo.metrics.model.key.MetricsKeyWrapper;
 import org.apache.dubbo.metrics.model.sample.GaugeMetricSample;
@@ -58,7 +57,7 @@ public class ServiceStatComposite extends 
AbstractMetricsExport {
             return;
         }
         serviceWrapperNumStats.get(wrapper).computeIfAbsent(new 
ServiceKeyMetric(getApplicationModel(), serviceKey), k -> new 
AtomicLong(0L)).getAndAdd(size);
-        MetricsSupport.fillZero(serviceWrapperNumStats);
+//        MetricsSupport.fillZero(serviceWrapperNumStats);
     }
 
     public void setServiceKey(MetricsKeyWrapper wrapper, String serviceKey, 
int num) {
@@ -66,7 +65,7 @@ public class ServiceStatComposite extends 
AbstractMetricsExport {
             return;
         }
         serviceWrapperNumStats.get(wrapper).computeIfAbsent(new 
ServiceKeyMetric(getApplicationModel(), serviceKey), k -> new 
AtomicLong(0L)).set(num);
-        MetricsSupport.fillZero(serviceWrapperNumStats);
+//        MetricsSupport.fillZero(serviceWrapperNumStats);
     }
 
     public List<MetricSample> export(MetricsCategory category) {
diff --git 
a/dubbo-metrics/dubbo-metrics-default/src/test/java/org/apache/dubbo/metrics/collector/DefaultCollectorTest.java
 
b/dubbo-metrics/dubbo-metrics-default/src/test/java/org/apache/dubbo/metrics/collector/DefaultCollectorTest.java
index ab17adeae3..0ebe6596f9 100644
--- 
a/dubbo-metrics/dubbo-metrics-default/src/test/java/org/apache/dubbo/metrics/collector/DefaultCollectorTest.java
+++ 
b/dubbo-metrics/dubbo-metrics-default/src/test/java/org/apache/dubbo/metrics/collector/DefaultCollectorTest.java
@@ -20,7 +20,6 @@ package org.apache.dubbo.metrics.collector;
 import org.apache.dubbo.common.URL;
 import org.apache.dubbo.common.constants.CommonConstants;
 import org.apache.dubbo.config.ApplicationConfig;
-import org.apache.dubbo.metrics.DefaultConstants;
 import org.apache.dubbo.metrics.TestMetricsInvoker;
 import org.apache.dubbo.metrics.event.MetricsDispatcher;
 import org.apache.dubbo.metrics.event.RequestBeforeEvent;
@@ -43,6 +42,7 @@ import org.apache.dubbo.rpc.RpcException;
 import org.apache.dubbo.rpc.RpcInvocation;
 import org.apache.dubbo.rpc.model.ApplicationModel;
 import org.apache.dubbo.rpc.model.FrameworkModel;
+
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
@@ -149,8 +149,8 @@ class DefaultCollectorTest {
 
         // push finish rt +1
         List<MetricSample> metricSamples = collector.collect();
-        //all METHOD_LEVEL_KEYS + rt(5) = 27
-        Assertions.assertEquals(DefaultConstants.METHOD_LEVEL_KEYS.size() + 5, 
metricSamples.size());
+        //num(total+success+processing) + rt(5) = 8
+        Assertions.assertEquals(8, metricSamples.size());
         List<String> metricsNames = 
metricSamples.stream().map(MetricSample::getName).collect(Collectors.toList());
         // No error will contain total+success+processing
         String REQUESTS = new MetricsKeyWrapper(METRIC_REQUESTS, 
MetricsPlaceValue.of(side, MetricsLevel.SERVICE)).targetKey();
@@ -192,7 +192,7 @@ class DefaultCollectorTest {
         metricSamples = collector.collect();
 
         // num(total+success+error+total_error+processing) + rt(5) = 5
-        Assertions.assertEquals(DefaultConstants.METHOD_LEVEL_KEYS.size() + 5, 
metricSamples.size());
+        Assertions.assertEquals(10, metricSamples.size());
 
         String TIMEOUT = new MetricsKeyWrapper(METRIC_REQUESTS_TIMEOUT, 
MetricsPlaceValue.of(side, MetricsLevel.SERVICE)).targetKey();
         String TOTAL_FAILED = new 
MetricsKeyWrapper(METRIC_REQUESTS_TOTAL_FAILED, MetricsPlaceValue.of(side, 
MetricsLevel.SERVICE)).targetKey();
diff --git 
a/dubbo-metrics/dubbo-metrics-default/src/test/java/org/apache/dubbo/metrics/filter/MetricsFilterTest.java
 
b/dubbo-metrics/dubbo-metrics-default/src/test/java/org/apache/dubbo/metrics/filter/MetricsFilterTest.java
index 76db78dfe0..33e19b66a6 100644
--- 
a/dubbo-metrics/dubbo-metrics-default/src/test/java/org/apache/dubbo/metrics/filter/MetricsFilterTest.java
+++ 
b/dubbo-metrics/dubbo-metrics-default/src/test/java/org/apache/dubbo/metrics/filter/MetricsFilterTest.java
@@ -37,6 +37,7 @@ import org.apache.dubbo.rpc.RpcContext;
 import org.apache.dubbo.rpc.RpcException;
 import org.apache.dubbo.rpc.RpcInvocation;
 import org.apache.dubbo.rpc.model.ApplicationModel;
+
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
@@ -127,7 +128,7 @@ class MetricsFilterTest {
 
         Map<String, MetricSample> metricsMap = getMetricsMap();
         
Assertions.assertTrue(metricsMap.containsKey(MetricsKey.METRIC_REQUESTS_FAILED.getNameByType(side)));
-        
Assertions.assertTrue(metricsMap.containsKey(MetricsKey.METRIC_REQUESTS_SUCCEED.getNameByType(side)));
+        
Assertions.assertFalse(metricsMap.containsKey(MetricsKey.METRIC_REQUESTS_SUCCEED.getNameByType(side)));
 
         MetricSample sample = 
metricsMap.get(MetricsKey.METRIC_REQUESTS_FAILED.getNameByType(side));
         Map<String, String> tags = sample.getTags();
@@ -154,7 +155,7 @@ class MetricsFilterTest {
 
         Map<String, MetricSample> metricsMap = getMetricsMap();
         
Assertions.assertTrue(metricsMap.containsKey(MetricsKey.METRIC_REQUEST_BUSINESS_FAILED.getNameByType(side)));
-        
Assertions.assertTrue(metricsMap.containsKey(MetricsKey.METRIC_REQUESTS_SUCCEED.getNameByType(side)));
+        
Assertions.assertFalse(metricsMap.containsKey(MetricsKey.METRIC_REQUESTS_SUCCEED.getNameByType(side)));
 
         MetricSample sample = 
metricsMap.get(MetricsKey.METRIC_REQUEST_BUSINESS_FAILED.getNameByType(side));
 
@@ -231,7 +232,7 @@ class MetricsFilterTest {
         filter.onResponse(result, invoker, invocation);
 
         Map<String, MetricSample> metricsMap = getMetricsMap();
-        
Assertions.assertTrue(metricsMap.containsKey(MetricsKey.METRIC_REQUEST_BUSINESS_FAILED.getNameByType(side)));
+        
Assertions.assertFalse(metricsMap.containsKey(MetricsKey.METRIC_REQUEST_BUSINESS_FAILED.getNameByType(side)));
         
Assertions.assertTrue(metricsMap.containsKey(MetricsKey.METRIC_REQUESTS_SUCCEED.getNameByType(side)));
 
         MetricSample sample = 
metricsMap.get(MetricsKey.METRIC_REQUESTS_SUCCEED.getNameByType(side));
@@ -291,14 +292,14 @@ class MetricsFilterTest {
             }
         }
         Map<String, MetricSample> metricsMap = getMetricsMap();
-        Assertions.assertTrue(metricsMap.containsKey(targetKey));
+        Assertions.assertFalse(metricsMap.containsKey(metricsKey.getName()));
 
         MetricSample sample = metricsMap.get(targetKey);
 
         Assertions.assertSame(((CounterMetricSample<?>) 
sample).getValue().longValue(), count);
 
 
-        Assertions.assertTrue(metricsMap.containsKey(targetKey));
+        Assertions.assertFalse(metricsMap.containsKey(metricsKey.getName()));
         Map<String, String> tags = sample.getTags();
 
         Assertions.assertEquals(tags.get(TAG_INTERFACE_KEY), INTERFACE_NAME);
diff --git 
a/dubbo-metrics/dubbo-metrics-metadata/src/test/java/org/apache/dubbo/metrics/metadata/MetadataMetricsCollectorTest.java
 
b/dubbo-metrics/dubbo-metrics-metadata/src/test/java/org/apache/dubbo/metrics/metadata/MetadataMetricsCollectorTest.java
index 23d93254a9..bce692123c 100644
--- 
a/dubbo-metrics/dubbo-metrics-metadata/src/test/java/org/apache/dubbo/metrics/metadata/MetadataMetricsCollectorTest.java
+++ 
b/dubbo-metrics/dubbo-metrics-metadata/src/test/java/org/apache/dubbo/metrics/metadata/MetadataMetricsCollectorTest.java
@@ -30,6 +30,7 @@ import 
org.apache.dubbo.metrics.model.sample.GaugeMetricSample;
 import org.apache.dubbo.metrics.model.sample.MetricSample;
 import org.apache.dubbo.rpc.model.ApplicationModel;
 import org.apache.dubbo.rpc.model.FrameworkModel;
+
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
@@ -211,7 +212,7 @@ class MetadataMetricsCollectorTest {
                 List<MetricSample> metricSamples = collector.collect();
 
                 // App(6) + service success(1)
-                
Assertions.assertEquals(MetadataMetricsConstants.APP_LEVEL_KEYS.size() + 
MetadataMetricsConstants.SERVICE_LEVEL_KEYS.size(), metricSamples.size());
+                
Assertions.assertEquals(MetadataMetricsConstants.APP_LEVEL_KEYS.size() + 1, 
metricSamples.size());
                 
Assertions.assertTrue(metricSamples.stream().allMatch(metricSample -> 
metricSample instanceof GaugeMetricSample));
                 
Assertions.assertTrue(metricSamples.stream().anyMatch(metricSample -> 
((GaugeMetricSample) metricSample).applyAsDouble() == 1));
                 return null;
@@ -221,7 +222,7 @@ class MetadataMetricsCollectorTest {
         // push finish rt +1
         List<MetricSample> metricSamples = collector.collect();
         // App(6) + service total/success(2) + rt(5) = 7
-        Assertions.assertEquals(MetadataMetricsConstants.APP_LEVEL_KEYS.size() 
+ MetadataMetricsConstants.SERVICE_LEVEL_KEYS.size() + 5, metricSamples.size());
+        Assertions.assertEquals(MetadataMetricsConstants.APP_LEVEL_KEYS.size() 
+ 2 + 5, metricSamples.size());
 
         long c1 = metadataEvent.getTimePair().calc();
         metadataEvent = 
MetadataEvent.toServiceSubscribeEvent(applicationModel, serviceKey);
diff --git 
a/dubbo-metrics/dubbo-metrics-registry/src/test/java/org/apache/dubbo/metrics/registry/metrics/collector/RegistryMetricsCollectorTest.java
 
b/dubbo-metrics/dubbo-metrics-registry/src/test/java/org/apache/dubbo/metrics/registry/metrics/collector/RegistryMetricsCollectorTest.java
index 9b9de75e60..00352ecf2a 100644
--- 
a/dubbo-metrics/dubbo-metrics-registry/src/test/java/org/apache/dubbo/metrics/registry/metrics/collector/RegistryMetricsCollectorTest.java
+++ 
b/dubbo-metrics/dubbo-metrics-registry/src/test/java/org/apache/dubbo/metrics/registry/metrics/collector/RegistryMetricsCollectorTest.java
@@ -30,6 +30,7 @@ import 
org.apache.dubbo.metrics.registry.collector.RegistryMetricsCollector;
 import org.apache.dubbo.metrics.registry.event.RegistryEvent;
 import org.apache.dubbo.rpc.model.ApplicationModel;
 import org.apache.dubbo.rpc.model.FrameworkModel;
+
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
@@ -140,9 +141,9 @@ class RegistryMetricsCollectorTest {
                 List<MetricSample> metricSamples = collector.collect();
 
                 // push success +1
-                
Assertions.assertEquals(RegistryMetricsConstants.APP_LEVEL_KEYS.size() + 
RegistryMetricsConstants.SERVICE_LEVEL_KEYS.size(), metricSamples.size());
+                
Assertions.assertEquals(RegistryMetricsConstants.APP_LEVEL_KEYS.size() + 1, 
metricSamples.size());
                 // Service num only 1 and contains tag of interface
-                
Assertions.assertEquals(RegistryMetricsConstants.SERVICE_LEVEL_KEYS.size(), 
metricSamples.stream().filter(metricSample -> 
serviceName.equals(metricSample.getTags().get("interface"))).count());
+                Assertions.assertEquals(1, 
metricSamples.stream().filter(metricSample -> 
serviceName.equals(metricSample.getTags().get("interface"))).count());
                 return null;
             }
         );
@@ -150,7 +151,7 @@ class RegistryMetricsCollectorTest {
         // push finish rt +1
         List<MetricSample> metricSamples = collector.collect();
         // App(7) + rt(5) + service(total/success) = 14
-        Assertions.assertEquals(RegistryMetricsConstants.APP_LEVEL_KEYS.size() 
+ 5 + RegistryMetricsConstants.SERVICE_LEVEL_KEYS.size(), metricSamples.size());
+        Assertions.assertEquals(RegistryMetricsConstants.APP_LEVEL_KEYS.size() 
+ 5 + 2, metricSamples.size());
 
         long c1 = registryEvent.getTimePair().calc();
         registryEvent = RegistryEvent.toRsEvent(applicationModel, serviceName, 
2);
@@ -171,7 +172,7 @@ class RegistryMetricsCollectorTest {
         metricSamples = collector.collect();
 
         // App(7) + rt(5) + service(total/success/failed) = 15
-        Assertions.assertEquals(RegistryMetricsConstants.APP_LEVEL_KEYS.size() 
+ 5 + RegistryMetricsConstants.SERVICE_LEVEL_KEYS.size(), metricSamples.size());
+        Assertions.assertEquals(RegistryMetricsConstants.APP_LEVEL_KEYS.size() 
+ 5 + 3, metricSamples.size());
 
         // calc rt
         for (MetricSample sample : metricSamples) {
@@ -202,9 +203,9 @@ class RegistryMetricsCollectorTest {
                 
Assertions.assertTrue(metricSamples.stream().allMatch(metricSample -> 
metricSample instanceof GaugeMetricSample));
                 
Assertions.assertTrue(metricSamples.stream().anyMatch(metricSample -> 
((GaugeMetricSample) metricSample).applyAsDouble() == 1));
                 // App(default=7) + (service success +1)
-                
Assertions.assertEquals(RegistryMetricsConstants.APP_LEVEL_KEYS.size() + 
RegistryMetricsConstants.SERVICE_LEVEL_KEYS.size(), metricSamples.size());
+                
Assertions.assertEquals(RegistryMetricsConstants.APP_LEVEL_KEYS.size() + 1, 
metricSamples.size());
                 // Service num only 1 and contains tag of interface
-                
Assertions.assertEquals(RegistryMetricsConstants.SERVICE_LEVEL_KEYS.size(), 
metricSamples.stream().filter(metricSample -> 
serviceName.equals(metricSample.getTags().get("interface"))).count());
+                Assertions.assertEquals(1, 
metricSamples.stream().filter(metricSample -> 
serviceName.equals(metricSample.getTags().get("interface"))).count());
                 return null;
             }
         );
@@ -212,7 +213,7 @@ class RegistryMetricsCollectorTest {
         // push finish rt +1
         List<MetricSample> metricSamples = collector.collect();
         // App(7) + rt(5) + service(total/success) = 14
-        Assertions.assertEquals(RegistryMetricsConstants.APP_LEVEL_KEYS.size() 
+ 5 + RegistryMetricsConstants.SERVICE_LEVEL_KEYS.size(), metricSamples.size());
+        Assertions.assertEquals(RegistryMetricsConstants.APP_LEVEL_KEYS.size() 
+ 5 + 2, metricSamples.size());
 
         long c1 = subscribeEvent.getTimePair().calc();
         subscribeEvent = RegistryEvent.toSsEvent(applicationModel, 
serviceName);
@@ -233,7 +234,7 @@ class RegistryMetricsCollectorTest {
         metricSamples = collector.collect();
 
         // App(7) + rt(5) + service(total/success/failed) = 15
-        Assertions.assertEquals(RegistryMetricsConstants.APP_LEVEL_KEYS.size() 
+ 5 + RegistryMetricsConstants.SERVICE_LEVEL_KEYS.size(), metricSamples.size());
+        Assertions.assertEquals(RegistryMetricsConstants.APP_LEVEL_KEYS.size() 
+ 5 + 3, metricSamples.size());
 
         // calc rt
         for (MetricSample sample : metricSamples) {
@@ -271,7 +272,7 @@ class RegistryMetricsCollectorTest {
         );
         List<MetricSample> metricSamples = collector.collect();
         // App(7) + num(service*3) + rt(5) = 9
-        
Assertions.assertEquals((RegistryMetricsConstants.APP_LEVEL_KEYS.size() + 3 + 
5)*3, metricSamples.size());
+        
Assertions.assertEquals((RegistryMetricsConstants.APP_LEVEL_KEYS.size() + 3 + 
5), metricSamples.size());
 
     }
 }

Reply via email to