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());
}
}