From 3276467f1e150826c1875f548ae07ebcd210bac7 Mon Sep 17 00:00:00 2001 From: Justin Lee Date: Wed, 27 Nov 2024 10:35:14 -0500 Subject: [PATCH] wrap advice in a try/catch --- .../server/MethodHandlersInstrumentation.java | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/dd-java-agent/instrumentation/grpc-1.5/src/main/java/datadog/trace/instrumentation/grpc/server/MethodHandlersInstrumentation.java b/dd-java-agent/instrumentation/grpc-1.5/src/main/java/datadog/trace/instrumentation/grpc/server/MethodHandlersInstrumentation.java index c74372dbb4e..cf6bae17205 100644 --- a/dd-java-agent/instrumentation/grpc-1.5/src/main/java/datadog/trace/instrumentation/grpc/server/MethodHandlersInstrumentation.java +++ b/dd-java-agent/instrumentation/grpc-1.5/src/main/java/datadog/trace/instrumentation/grpc/server/MethodHandlersInstrumentation.java @@ -50,16 +50,20 @@ public static class BuildAdvice { @Advice.OnMethodEnter(suppress = Throwable.class) public static void onEnter(@Advice.Argument(0) Object serviceImpl) { - Class serviceClass = serviceImpl.getClass(); - Class superclass = serviceClass.getSuperclass(); - if (superclass != null) { - for (Method method : superclass.getDeclaredMethods()) { - try { - entry(serviceClass.getDeclaredMethod(method.getName(), method.getParameterTypes())); - } catch (Throwable e) { - // service method not overridden on the impl. skipping instrumentation. + try { + Class serviceClass = serviceImpl.getClass(); + Class superclass = serviceClass.getSuperclass(); + if (superclass != null) { + for (Method method : superclass.getDeclaredMethods()) { + try { + entry(serviceClass.getDeclaredMethod(method.getName(), method.getParameterTypes())); + } catch (Throwable e) { + // service method not overridden on the impl. skipping instrumentation. + } } } + } catch (Throwable e) { + // this should be logged somehow } } }