This is an automated email from the ASF dual-hosted git repository.
crazyhzm 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 afd1072601 fix(MetricsEventBus): fix some bugs (#15296)
afd1072601 is described below
commit afd1072601ba8189b325ea3e9ec6605783b57e31
Author: 彭镜肇 <[email protected]>
AuthorDate: Sat Apr 12 14:58:15 2025 +0800
fix(MetricsEventBus): fix some bugs (#15296)
---
.../org/apache/dubbo/metrics/event/MetricsEventBus.java | 15 ++++++++++++---
1 file changed, 12 insertions(+), 3 deletions(-)
diff --git
a/dubbo-metrics/dubbo-metrics-event/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
index 7654c2d902..37de6ad4e0 100644
---
a/dubbo-metrics/dubbo-metrics-event/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
@@ -38,7 +38,7 @@ public class MetricsEventBus {
* @param event event to post.
*/
public static void publish(MetricsEvent event) {
- if (event.getSource() == null) {
+ if (event == null || event.getSource() == null) {
return;
}
MetricsEventMulticaster dispatcher =
event.getMetricsEventMulticaster();
@@ -92,6 +92,9 @@ public class MetricsEventBus {
}
public static void tryInvoke(Runnable runnable) {
+ if (runnable == null) {
+ return;
+ }
try {
runnable.run();
} catch (Throwable e) {
@@ -115,14 +118,20 @@ public class MetricsEventBus {
if (dispatcher == null) return;
tryInvoke(() -> {
event.customAfterPost(result);
- dispatcher.publishFinishEvent((TimeCounterEvent) event);
+ if (event instanceof TimeCounterEvent) {
+ dispatcher.publishFinishEvent((TimeCounterEvent) event);
+ }
});
}
public static void error(MetricsEvent event) {
MetricsEventMulticaster dispatcher = validate(event);
if (dispatcher == null) return;
- tryInvoke(() -> dispatcher.publishErrorEvent((TimeCounterEvent)
event));
+ tryInvoke(() -> {
+ if (event instanceof TimeCounterEvent) {
+ dispatcher.publishErrorEvent((TimeCounterEvent) event);
+ }
+ });
}
private static MetricsEventMulticaster validate(MetricsEvent event) {