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) {

Reply via email to