From e1380f938fd71699cb4a1b84634383f139d961ec Mon Sep 17 00:00:00 2001 From: Nugusbayev Kanagat <48118512+kananindzya@users.noreply.github.com> Date: Wed, 14 Apr 2021 11:55:06 +0600 Subject: [PATCH] Migrate mongoclient plugin to indy (#1369) --- CHANGELOG.asciidoc | 4 ++++ .../apm/agent/mongoclient/ConnectionAdvice.java | 13 ++++++------- .../mongoclient/ConnectionInstrumentation.java | 11 ++++++----- .../mongoclient/MongoClientInstrumentation.java | 4 ---- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index 25b09aff6c..538612942b 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -71,6 +71,10 @@ Even when matching on the main class name or on system properties, * Fix `NullPointerException` on legacy Apache client instrumentation when host is `null` - {pull}1746[#1746] * Apply consistent proxy class exclusion heuristic - {pull}1738[#1738] +[float] +===== Refactors +* Migrate MongoDB plugin to indy dispatcher {pull}1369[#1369] + [[release-notes-1.x]] === Java Agent version 1.x diff --git a/apm-agent-plugins/apm-mongoclient-plugin/src/main/java/co/elastic/apm/agent/mongoclient/ConnectionAdvice.java b/apm-agent-plugins/apm-mongoclient-plugin/src/main/java/co/elastic/apm/agent/mongoclient/ConnectionAdvice.java index b23525826b..60b0ce79c3 100644 --- a/apm-agent-plugins/apm-mongoclient-plugin/src/main/java/co/elastic/apm/agent/mongoclient/ConnectionAdvice.java +++ b/apm-agent-plugins/apm-mongoclient-plugin/src/main/java/co/elastic/apm/agent/mongoclient/ConnectionAdvice.java @@ -24,7 +24,6 @@ */ package co.elastic.apm.agent.mongoclient; -import co.elastic.apm.agent.bci.VisibleForAdvice; import co.elastic.apm.agent.impl.GlobalTracer; import co.elastic.apm.agent.impl.transaction.AbstractSpan; import co.elastic.apm.agent.impl.transaction.Span; @@ -41,12 +40,11 @@ public class ConnectionAdvice { - @VisibleForAdvice public static final Logger logger = LoggerFactory.getLogger(ConnectionAdvice.class); @Nullable - @Advice.OnMethodEnter(suppress = Throwable.class) - public static Span onEnter(@Advice.This Connection thiz, + @Advice.OnMethodEnter(suppress = Throwable.class, inline = false) + public static Object onEnter(@Advice.This Connection thiz, @Advice.Argument(0) Object databaseOrMongoNamespace, @Advice.Argument(1) BsonDocument command) { Span span = null; @@ -113,9 +111,10 @@ public static Span onEnter(@Advice.This Connection thiz, return span; } - @Advice.OnMethodExit(suppress = Throwable.class, onThrowable = Throwable.class) - public static void onExit(@Nullable @Advice.Enter Span span, @Advice.Thrown Throwable thrown, @Advice.Origin("#m") String methodName) { - if (span != null) { + @Advice.OnMethodExit(suppress = Throwable.class, onThrowable = Throwable.class, inline = false) + public static void onExit(@Nullable @Advice.Enter Object spanObj, @Advice.Thrown Throwable thrown, @Advice.Origin("#m") String methodName) { + if (spanObj instanceof Span) { + Span span = (Span) spanObj; span.deactivate().captureException(thrown); if (!methodName.endsWith("Async")) { span.end(); diff --git a/apm-agent-plugins/apm-mongoclient-plugin/src/main/java/co/elastic/apm/agent/mongoclient/ConnectionInstrumentation.java b/apm-agent-plugins/apm-mongoclient-plugin/src/main/java/co/elastic/apm/agent/mongoclient/ConnectionInstrumentation.java index 76d0dc87e2..0250150873 100644 --- a/apm-agent-plugins/apm-mongoclient-plugin/src/main/java/co/elastic/apm/agent/mongoclient/ConnectionInstrumentation.java +++ b/apm-agent-plugins/apm-mongoclient-plugin/src/main/java/co/elastic/apm/agent/mongoclient/ConnectionInstrumentation.java @@ -69,8 +69,8 @@ public ElementMatcher getMethodMatcher() { } @Nullable - @Advice.OnMethodEnter(suppress = Throwable.class) - public static Span onEnter(@Advice.This Connection thiz, + @Advice.OnMethodEnter(suppress = Throwable.class, inline = false) + public static Object onEnter(@Advice.This Connection thiz, @Advice.Argument(0) MongoNamespace namespace, @Advice.Origin("#m") String methodName) { Span span = null; @@ -109,9 +109,10 @@ public static Span onEnter(@Advice.This Connection thiz, return span; } - @Advice.OnMethodExit(suppress = Throwable.class, onThrowable = Throwable.class) - public static void onExit(@Nullable @Advice.Enter Span span, @Advice.Thrown Throwable thrown) { - if (span != null) { + @Advice.OnMethodExit(suppress = Throwable.class, onThrowable = Throwable.class, inline = false) + public static void onExit(@Nullable @Advice.Enter Object spanObj, @Advice.Thrown Throwable thrown) { + if (spanObj instanceof Span) { + Span span = (Span) spanObj; span.deactivate().captureException(thrown); span.end(); } diff --git a/apm-agent-plugins/apm-mongoclient-plugin/src/main/java/co/elastic/apm/agent/mongoclient/MongoClientInstrumentation.java b/apm-agent-plugins/apm-mongoclient-plugin/src/main/java/co/elastic/apm/agent/mongoclient/MongoClientInstrumentation.java index d06f32a767..1ed1f8ebb2 100644 --- a/apm-agent-plugins/apm-mongoclient-plugin/src/main/java/co/elastic/apm/agent/mongoclient/MongoClientInstrumentation.java +++ b/apm-agent-plugins/apm-mongoclient-plugin/src/main/java/co/elastic/apm/agent/mongoclient/MongoClientInstrumentation.java @@ -49,8 +49,4 @@ public Collection getInstrumentationGroupNames() { return Collections.singletonList("mongodb-client"); } - @Override - public boolean indyPlugin() { - return false; - } }