diff --git a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/event/MetricsEventBus.java b/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/event/MetricsEventBus.java index 8757454e02..74ef55e4c7 100644 --- a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/event/MetricsEventBus.java +++ b/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/event/MetricsEventBus.java @@ -43,7 +43,9 @@ public class MetricsEventBus { return; } MetricsDispatcher dispatcher = event.getMetricsDispatcher(); - Optional.ofNullable(dispatcher).ifPresent(d -> d.publishEvent(event)); + Optional.ofNullable(dispatcher).ifPresent(d -> { + tryInvoke(() -> d.publishEvent(event)); + }); } /** @@ -70,32 +72,22 @@ public class MetricsEventBus { */ public static T post(MetricsEvent event, Supplier targetSupplier, Function trFunction) { T result; - tryInvoke(() -> { - before(event); - }); + tryInvoke(() -> before(event)); if (trFunction == null) { try { result = targetSupplier.get(); } catch (Throwable e) { - tryInvoke(() -> { - error(event); - }); + tryInvoke(() -> error(event)); throw e; } - tryInvoke(() -> { - after(event, result); - }); + tryInvoke(() -> after(event, result)); } else { // Custom failure status result = targetSupplier.get(); if (trFunction.apply(result)) { - tryInvoke(() -> { - after(event, result); - }); + tryInvoke(() -> after(event, result)); } else { - tryInvoke(() -> { - error(event); - }); + tryInvoke(() -> error(event)); } } return result; @@ -105,8 +97,7 @@ public class MetricsEventBus { try { runnable.run(); } catch (Throwable e) { - logger.warn(COMMON_METRICS_COLLECTOR_EXCEPTION, "" + - "", "", "invoke metric event error" + e.getMessage()); + logger.warn(COMMON_METRICS_COLLECTOR_EXCEPTION, "", "", "invoke metric event error" + e.getMessage()); } } @@ -117,20 +108,22 @@ public class MetricsEventBus { public static void before(MetricsEvent event) { MetricsDispatcher dispatcher = validate(event); if (dispatcher == null) return; - dispatcher.publishEvent(event); + tryInvoke(() -> dispatcher.publishEvent(event)); } public static void after(MetricsEvent event, Object result) { MetricsDispatcher dispatcher = validate(event); if (dispatcher == null) return; - event.customAfterPost(result); - dispatcher.publishFinishEvent((TimeCounterEvent) event); + tryInvoke(() -> { + event.customAfterPost(result); + dispatcher.publishFinishEvent((TimeCounterEvent) event); + }); } public static void error(MetricsEvent event) { MetricsDispatcher dispatcher = validate(event); if (dispatcher == null) return; - dispatcher.publishErrorEvent((TimeCounterEvent) event); + tryInvoke(() -> dispatcher.publishErrorEvent((TimeCounterEvent) event)); } private static MetricsDispatcher validate(MetricsEvent event) {