From b87746b19fb99b60b3e6973b3b50e3daca04eb27 Mon Sep 17 00:00:00 2001 From: songxiaosheng Date: Wed, 16 Aug 2023 20:04:25 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=91=20add=20more=20metrics=20catch=20(?= =?UTF-8?q?#12917)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dubbo/metrics/event/MetricsEventBus.java | 37 ++++++++----------- 1 file changed, 15 insertions(+), 22 deletions(-) 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) {