From 70e9d512c114d0f90057464a20b192e527182dfc Mon Sep 17 00:00:00 2001 From: wangzhancheng <704450642@qq.com> Date: Thu, 13 Oct 2022 21:40:05 +0800 Subject: [PATCH] fix spring-webflux cast to PathPattern throws ClassCastException Signed-off-by: wangzhancheng <704450642@qq.com> --- .../spring/webflux/server/WebfluxSingletons.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/instrumentation/spring/spring-webflux-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/webflux/server/WebfluxSingletons.java b/instrumentation/spring/spring-webflux-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/webflux/server/WebfluxSingletons.java index 56b325050997..17e3c6152660 100644 --- a/instrumentation/spring/spring-webflux-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/webflux/server/WebfluxSingletons.java +++ b/instrumentation/spring/spring-webflux-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/webflux/server/WebfluxSingletons.java @@ -41,9 +41,15 @@ public static Instrumenter instrumenter() { public static HttpRouteGetter httpRouteGetter() { return (context, exchange) -> { - PathPattern bestPattern = + Object bestPatternObj = exchange.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE); - return bestPattern == null ? null : bestPattern.getPatternString(); + if (bestPatternObj == null) { + return null; + } + if (bestPatternObj instanceof PathPattern) { + return ((PathPattern) bestPatternObj).getPatternString(); + } + return bestPatternObj.toString(); }; }