From 15024915bf76ef00d017f950e61fca15ccc83779 Mon Sep 17 00:00:00 2001 From: Nikolay Martynov Date: Thu, 1 Nov 2018 09:57:18 -0400 Subject: [PATCH] Catch `AbstractMethodError` when trying to unwrap jdbc connection jdts throws this exception since they just have 'stub' umplementation. --- .../instrumentation/jdbc/PreparedStatementInstrumentation.java | 3 ++- .../trace/instrumentation/jdbc/StatementInstrumentation.java | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/PreparedStatementInstrumentation.java b/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/PreparedStatementInstrumentation.java index d8cf4a8f60..2db5f8a797 100644 --- a/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/PreparedStatementInstrumentation.java +++ b/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/PreparedStatementInstrumentation.java @@ -70,9 +70,10 @@ public final class PreparedStatementInstrumentation extends Instrumenter.Default if (connection.isWrapperFor(Connection.class)) { connection = connection.unwrap(Connection.class); } - } catch (final Exception e) { + } catch (final Exception | AbstractMethodError e) { // perhaps wrapping isn't supported? // ex: org.h2.jdbc.JdbcConnection v1.3.175 + // or: jdts.jdbc which always throws `AbstractMethodError` (at least up to version 1.3) // Stick with original connection. } } catch (final Throwable e) { diff --git a/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/StatementInstrumentation.java b/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/StatementInstrumentation.java index 1c08691c1a..8ddbd01903 100644 --- a/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/StatementInstrumentation.java +++ b/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/StatementInstrumentation.java @@ -71,9 +71,10 @@ public final class StatementInstrumentation extends Instrumenter.Default { if (connection.isWrapperFor(Connection.class)) { connection = connection.unwrap(Connection.class); } - } catch (final Exception e) { + } catch (final Exception | AbstractMethodError e) { // perhaps wrapping isn't supported? // ex: org.h2.jdbc.JdbcConnection v1.3.175 + // or: jdts.jdbc which always throws `AbstractMethodError` (at least up to version 1.3) // Stick with original connection. } } catch (final Throwable e) {