This is an automated email from the ASF dual-hosted git repository. songxiaosheng pushed a commit to branch 3.3 in repository https://gitbox.apache.org/repos/asf/dubbo.git
The following commit(s) were added to refs/heads/3.3 by this push: new bf3d4f4ca3 Metrics event split (#12888) bf3d4f4ca3 is described below commit bf3d4f4ca3ad0b6301876dca0b7c345d739c1bd8 Author: namelessssssssssss <100946116+namelesssssssss...@users.noreply.github.com> AuthorDate: Thu Aug 31 08:02:41 2023 +0800 Metrics event split (#12888) * Split event-related api out of dubbo-metrics-api. * Add new module to .artifacts * Temporary remove dubbo-plugin-metrics * Fix pom * * Remove the use of dispatcher name * * Bug fix * * Bug fix * Update ScopeClusterInvokerTest.java * * Trigger test * * Fix ut --------- Co-authored-by: songxiaosheng <songxiaosh...@elastic.link> --- .artifacts | 1 + .../support/AbstractClusterInvokerTest.java | 1 - dubbo-distribution/dubbo-all/pom.xml | 8 ++++++++ dubbo-distribution/dubbo-bom/pom.xml | 5 +++++ dubbo-metrics/dubbo-metrics-api/pom.xml | 5 +++++ .../metrics/collector/DefaultCollectorTest.java | 14 +++++++++---- .../pom.xml | 19 ++++-------------- .../org/apache/dubbo/metrics/MetricsConstants.java | 0 .../apache/dubbo/metrics/event/MetricsEvent.java | 23 +++++++++++----------- .../dubbo/metrics/event/MetricsEventBus.java | 13 ++++++------ .../metrics/event/MetricsEventMulticaster.java | 0 .../dubbo/metrics/event/TimeCounterEvent.java | 2 +- .../exception/MetricsNeverHappenException.java | 0 .../dubbo/metrics/listener/MetricsListener.java | 0 .../org/apache/dubbo/metrics/model/TimePair.java | 0 .../apache/dubbo/metrics/model/key/MetricsKey.java | 0 .../dubbo/metrics/model/key/MetricsLevel.java | 0 .../dubbo/metrics/model/key/TypeWrapper.java | 0 dubbo-metrics/pom.xml | 1 + dubbo-test/dubbo-dependencies-all/pom.xml | 5 +++++ 20 files changed, 58 insertions(+), 39 deletions(-) diff --git a/.artifacts b/.artifacts index be912a56f7..aa865b891a 100644 --- a/.artifacts +++ b/.artifacts @@ -66,6 +66,7 @@ dubbo-metrics-prometheus dubbo-metrics-registry dubbo-metrics-config-center dubbo-metrics-netty +dubbo-metrics-event dubbo-monitor dubbo-monitor-api dubbo-monitor-common diff --git a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/AbstractClusterInvokerTest.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/AbstractClusterInvokerTest.java index 31c3af53f2..496e4369b2 100644 --- a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/AbstractClusterInvokerTest.java +++ b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/AbstractClusterInvokerTest.java @@ -60,7 +60,6 @@ import static org.apache.dubbo.common.constants.CommonConstants.MONITOR_KEY; import static org.apache.dubbo.common.constants.CommonConstants.PATH_KEY; import static org.apache.dubbo.common.constants.CommonConstants.PROTOCOL_KEY; import static org.apache.dubbo.rpc.cluster.Constants.CLUSTER_AVAILABLE_CHECK_KEY; -import static org.apache.dubbo.rpc.cluster.Constants.INVOCATION_NEED_MOCK; import static org.apache.dubbo.rpc.cluster.Constants.REFER_KEY; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.ArgumentMatchers.same; diff --git a/dubbo-distribution/dubbo-all/pom.xml b/dubbo-distribution/dubbo-all/pom.xml index 89e2b77abc..c2e4b05633 100644 --- a/dubbo-distribution/dubbo-all/pom.xml +++ b/dubbo-distribution/dubbo-all/pom.xml @@ -190,6 +190,13 @@ </dependency> <!-- metrics --> + <dependency> + <groupId>org.apache.dubbo</groupId> + <artifactId>dubbo-metrics-event</artifactId> + <version>${project.version}</version> + <scope>compile</scope> + <optional>true</optional> + </dependency> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-metrics-api</artifactId> @@ -690,6 +697,7 @@ <include>org.apache.dubbo:dubbo-metadata-report-nacos</include> <include>org.apache.dubbo:dubbo-metadata-report-redis</include> <include>org.apache.dubbo:dubbo-metadata-report-zookeeper</include> + <include>org.apache.dubbo:dubbo-metrics-event</include> <include>org.apache.dubbo:dubbo-metrics-api</include> <include>org.apache.dubbo:dubbo-metrics-default</include> <include>org.apache.dubbo:dubbo-metrics-registry</include> diff --git a/dubbo-distribution/dubbo-bom/pom.xml b/dubbo-distribution/dubbo-bom/pom.xml index 9757c56352..bf3b0d3110 100644 --- a/dubbo-distribution/dubbo-bom/pom.xml +++ b/dubbo-distribution/dubbo-bom/pom.xml @@ -251,6 +251,11 @@ <artifactId>dubbo-metrics-api</artifactId> <version>${project.version}</version> </dependency> + <dependency> + <groupId>org.apache.dubbo</groupId> + <artifactId>dubbo-metrics-event</artifactId> + <version>${project.version}</version> + </dependency> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-metrics-default</artifactId> diff --git a/dubbo-metrics/dubbo-metrics-api/pom.xml b/dubbo-metrics/dubbo-metrics-api/pom.xml index 3c31ae389c..3ee341dcba 100644 --- a/dubbo-metrics/dubbo-metrics-api/pom.xml +++ b/dubbo-metrics/dubbo-metrics-api/pom.xml @@ -36,6 +36,11 @@ <artifactId>dubbo-common</artifactId> <version>${project.parent.version}</version> </dependency> + <dependency> + <groupId>org.apache.dubbo</groupId> + <artifactId>dubbo-metrics-event</artifactId> + <version>${project.parent.version}</version> + </dependency> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-rpc-api</artifactId> 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 450da8a7c6..9fd5257cc5 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 @@ -19,7 +19,10 @@ package org.apache.dubbo.metrics.collector; import org.apache.dubbo.common.URL; import org.apache.dubbo.common.constants.CommonConstants; +import org.apache.dubbo.common.logger.ErrorTypeAwareLogger; +import org.apache.dubbo.common.logger.LoggerFactory; import org.apache.dubbo.config.ApplicationConfig; +import org.apache.dubbo.metrics.MetricsConstants; import org.apache.dubbo.metrics.TestMetricsInvoker; import org.apache.dubbo.metrics.event.MetricsDispatcher; import org.apache.dubbo.metrics.event.RequestEvent; @@ -134,6 +137,9 @@ class DefaultCollectorTest { DefaultMetricsCollector collector = applicationModel.getBeanFactory().getOrRegisterBean(DefaultMetricsCollector.class); collector.setCollectEnabled(true); + ErrorTypeAwareLogger logger = LoggerFactory.getErrorTypeAwareLogger(DefaultCollectorTest.class); + logger.warn("0-99","","","Test error code message."); + metricsFilter.invoke(new TestMetricsInvoker(side), invocation); try { Thread.sleep(50); @@ -150,8 +156,8 @@ class DefaultCollectorTest { // push finish rt +1 List<MetricSample> metricSamples = collector.collect(); - //num(total+success+processing) + rt(5) = 8 - Assertions.assertEquals(8, metricSamples.size()); + //num(total+success+processing) + rt(5) + error code = 9 + Assertions.assertEquals(metricSamples.size(),9); 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,8 +198,8 @@ class DefaultCollectorTest { long c2 = eventObj.getTimePair().calc(); metricSamples = collector.collect(); - // num(total+success+error+total_error+processing) + rt(5) = 5 - Assertions.assertEquals(10, metricSamples.size()); + // num(total+success+error+total_error+processing) + rt(5) + error code = 11 + Assertions.assertEquals(11, 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-api/pom.xml b/dubbo-metrics/dubbo-metrics-event/pom.xml similarity index 73% copy from dubbo-metrics/dubbo-metrics-api/pom.xml copy to dubbo-metrics/dubbo-metrics-event/pom.xml index 3c31ae389c..4db769019c 100644 --- a/dubbo-metrics/dubbo-metrics-api/pom.xml +++ b/dubbo-metrics/dubbo-metrics-event/pom.xml @@ -23,31 +23,20 @@ <version>${revision}</version> <relativePath>../pom.xml</relativePath> </parent> - <artifactId>dubbo-metrics-api</artifactId> + <artifactId>dubbo-metrics-event</artifactId> <packaging>jar</packaging> <name>${project.artifactId}</name> - <description>The metrics module of dubbo project</description> + <description>The metrics event-related api module of dubbo project</description> <properties> <skip_maven_deploy>false</skip_maven_deploy> </properties> + <dependencies> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-common</artifactId> <version>${project.parent.version}</version> </dependency> - <dependency> - <groupId>org.apache.dubbo</groupId> - <artifactId>dubbo-rpc-api</artifactId> - <version>${project.parent.version}</version> - </dependency> - <dependency> - <groupId>io.micrometer</groupId> - <artifactId>micrometer-core</artifactId> - </dependency> - <dependency> - <groupId>com.tdunning</groupId> - <artifactId>t-digest</artifactId> - </dependency> </dependencies> + </project> diff --git a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/MetricsConstants.java b/dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/MetricsConstants.java similarity index 100% rename from dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/MetricsConstants.java rename to dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/MetricsConstants.java diff --git a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/event/MetricsEvent.java b/dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/event/MetricsEvent.java similarity index 86% rename from dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/event/MetricsEvent.java rename to dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/event/MetricsEvent.java index 3b22dfa818..b0e587a396 100644 --- a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/event/MetricsEvent.java +++ b/dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/event/MetricsEvent.java @@ -19,7 +19,6 @@ package org.apache.dubbo.metrics.event; import org.apache.dubbo.common.beans.factory.ScopeBeanFactory; import org.apache.dubbo.metrics.exception.MetricsNeverHappenException; -import org.apache.dubbo.metrics.model.MethodMetric; import org.apache.dubbo.metrics.model.key.TypeWrapper; import org.apache.dubbo.rpc.model.ApplicationModel; @@ -33,13 +32,13 @@ import java.util.Map; public abstract class MetricsEvent { /** - * Metric object. (eg. {@link MethodMetric}) + * Metric object. (eg. MethodMetric) */ protected transient final ApplicationModel source; private boolean available = true; private final TypeWrapper typeWrapper; private final String appName; - private final MetricsDispatcher metricsDispatcher; + private final MetricsEventMulticaster metricsEventMulticaster; private final Map<String, Object> attachments = new IdentityHashMap<>(8); @@ -47,7 +46,7 @@ public abstract class MetricsEvent { this(source, null, null, typeWrapper); } - public MetricsEvent(ApplicationModel source, String appName, MetricsDispatcher metricsDispatcher, TypeWrapper typeWrapper) { + public MetricsEvent(ApplicationModel source, String appName, MetricsEventMulticaster metricsEventMulticaster, TypeWrapper typeWrapper) { this.typeWrapper = typeWrapper; if (source == null) { this.source = ApplicationModel.defaultModel(); @@ -56,20 +55,20 @@ public abstract class MetricsEvent { } else { this.source = source; } - if (metricsDispatcher == null) { + if (metricsEventMulticaster == null) { if (this.source.isDestroyed()) { - this.metricsDispatcher = null; + this.metricsEventMulticaster = null; } else { ScopeBeanFactory beanFactory = this.source.getBeanFactory(); if (beanFactory.isDestroyed()) { - this.metricsDispatcher = null; + this.metricsEventMulticaster = null; } else { - MetricsDispatcher dispatcher = beanFactory.getBean(MetricsDispatcher.class); - this.metricsDispatcher = dispatcher; + MetricsEventMulticaster dispatcher = beanFactory.getBean(MetricsEventMulticaster.class); + this.metricsEventMulticaster = dispatcher; } } } else { - this.metricsDispatcher = metricsDispatcher; + this.metricsEventMulticaster = metricsEventMulticaster; } if (appName == null) { this.appName = this.source.tryGetApplicationName(); @@ -115,8 +114,8 @@ public abstract class MetricsEvent { return source; } - public MetricsDispatcher getMetricsDispatcher() { - return metricsDispatcher; + public MetricsEventMulticaster getMetricsEventMulticaster() { + return metricsEventMulticaster; } public String appName() { diff --git a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/event/MetricsEventBus.java b/dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/event/MetricsEventBus.java similarity index 91% rename from dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/event/MetricsEventBus.java rename to dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/event/MetricsEventBus.java index 74ef55e4c7..2d0888d17a 100644 --- a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/event/MetricsEventBus.java +++ b/dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/event/MetricsEventBus.java @@ -42,7 +42,7 @@ public class MetricsEventBus { if (event.getSource() == null) { return; } - MetricsDispatcher dispatcher = event.getMetricsDispatcher(); + MetricsEventMulticaster dispatcher = event.getMetricsEventMulticaster(); Optional.ofNullable(dispatcher).ifPresent(d -> { tryInvoke(() -> d.publishEvent(event)); }); @@ -106,13 +106,14 @@ public class MetricsEventBus { * eventSaveRunner saves the event, so that the calculation rt is introverted */ public static void before(MetricsEvent event) { - MetricsDispatcher dispatcher = validate(event); + MetricsEventMulticaster dispatcher = validate(event); + if (dispatcher == null) return; tryInvoke(() -> dispatcher.publishEvent(event)); } public static void after(MetricsEvent event, Object result) { - MetricsDispatcher dispatcher = validate(event); + MetricsEventMulticaster dispatcher = validate(event); if (dispatcher == null) return; tryInvoke(() -> { event.customAfterPost(result); @@ -121,13 +122,13 @@ public class MetricsEventBus { } public static void error(MetricsEvent event) { - MetricsDispatcher dispatcher = validate(event); + MetricsEventMulticaster dispatcher = validate(event); if (dispatcher == null) return; tryInvoke(() -> dispatcher.publishErrorEvent((TimeCounterEvent) event)); } - private static MetricsDispatcher validate(MetricsEvent event) { - MetricsDispatcher dispatcher = event.getMetricsDispatcher(); + private static MetricsEventMulticaster validate(MetricsEvent event) { + MetricsEventMulticaster dispatcher = event.getMetricsEventMulticaster(); if (dispatcher == null) { return null; } diff --git a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/event/MetricsEventMulticaster.java b/dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/event/MetricsEventMulticaster.java similarity index 100% rename from dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/event/MetricsEventMulticaster.java rename to dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/event/MetricsEventMulticaster.java diff --git a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/event/TimeCounterEvent.java b/dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/event/TimeCounterEvent.java similarity index 95% rename from dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/event/TimeCounterEvent.java rename to dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/event/TimeCounterEvent.java index 69e7e42925..e814465b36 100644 --- a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/event/TimeCounterEvent.java +++ b/dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/event/TimeCounterEvent.java @@ -33,7 +33,7 @@ public abstract class TimeCounterEvent extends MetricsEvent { this.timePair = TimePair.start(); } - public TimeCounterEvent(ApplicationModel source, String appName, MetricsDispatcher metricsDispatcher, TypeWrapper typeWrapper) { + public TimeCounterEvent(ApplicationModel source, String appName,MetricsEventMulticaster metricsDispatcher, TypeWrapper typeWrapper) { super(source, appName, metricsDispatcher, typeWrapper); this.timePair = TimePair.start(); } diff --git a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/exception/MetricsNeverHappenException.java b/dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/exception/MetricsNeverHappenException.java similarity index 100% rename from dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/exception/MetricsNeverHappenException.java rename to dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/exception/MetricsNeverHappenException.java diff --git a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/listener/MetricsListener.java b/dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/listener/MetricsListener.java similarity index 100% rename from dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/listener/MetricsListener.java rename to dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/listener/MetricsListener.java diff --git a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/model/TimePair.java b/dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/model/TimePair.java similarity index 100% rename from dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/model/TimePair.java rename to dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/model/TimePair.java diff --git a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/model/key/MetricsKey.java b/dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/model/key/MetricsKey.java similarity index 100% rename from dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/model/key/MetricsKey.java rename to dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/model/key/MetricsKey.java diff --git a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/model/key/MetricsLevel.java b/dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/model/key/MetricsLevel.java similarity index 100% rename from dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/model/key/MetricsLevel.java rename to dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/model/key/MetricsLevel.java diff --git a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/model/key/TypeWrapper.java b/dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/model/key/TypeWrapper.java similarity index 100% rename from dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/model/key/TypeWrapper.java rename to dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/model/key/TypeWrapper.java diff --git a/dubbo-metrics/pom.xml b/dubbo-metrics/pom.xml index 014632df63..901a7888ec 100644 --- a/dubbo-metrics/pom.xml +++ b/dubbo-metrics/pom.xml @@ -19,6 +19,7 @@ <modelVersion>4.0.0</modelVersion> <modules> <module>dubbo-metrics-api</module> + <module>dubbo-metrics-event</module> <module>dubbo-metrics-default</module> <module>dubbo-metrics-registry</module> <module>dubbo-metrics-metadata</module> diff --git a/dubbo-test/dubbo-dependencies-all/pom.xml b/dubbo-test/dubbo-dependencies-all/pom.xml index 0216003790..6afbac88e0 100644 --- a/dubbo-test/dubbo-dependencies-all/pom.xml +++ b/dubbo-test/dubbo-dependencies-all/pom.xml @@ -181,6 +181,11 @@ <artifactId>dubbo-metrics-api</artifactId> <version>${project.version}</version> </dependency> + <dependency> + <groupId>org.apache.dubbo</groupId> + <artifactId>dubbo-metrics-event</artifactId> + <version>${project.version}</version> + </dependency> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-metrics-default</artifactId>