From b3e543d2dfdb86378e0fd759fec61746a752d44a Mon Sep 17 00:00:00 2001 From: Lauri Tulmin Date: Fri, 15 Jul 2022 09:59:28 +0300 Subject: [PATCH] Hikaricp: Avoid registering duplicate metrics (#6325) * Hikaricp: Avoid registering duplicate metrics * Update instrumentation/hikaricp-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hikaricp/HikariPoolInstrumentation.java Co-authored-by: Trask Stalnaker * spotless * Trigger build Co-authored-by: Trask Stalnaker --- .../hikaricp/HikariPoolInstrumentation.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/instrumentation/hikaricp-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hikaricp/HikariPoolInstrumentation.java b/instrumentation/hikaricp-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hikaricp/HikariPoolInstrumentation.java index 703c7d0c52..d93e1bb594 100644 --- a/instrumentation/hikaricp-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hikaricp/HikariPoolInstrumentation.java +++ b/instrumentation/hikaricp-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/hikaricp/HikariPoolInstrumentation.java @@ -39,8 +39,16 @@ public class HikariPoolInstrumentation implements TypeInstrumentation { @Advice.OnMethodEnter(suppress = Throwable.class) public static void onEnter( - @Advice.Argument(value = 0, readOnly = false) MetricsTrackerFactory userMetricsTracker) { + @Advice.Argument(value = 0, readOnly = false) MetricsTrackerFactory userMetricsTracker, + @Advice.FieldValue(value = "metricsTracker") AutoCloseable existingMetricsTracker) + throws Exception { + if (existingMetricsTracker != null) { + // we call close on the existing metrics tracker in case it's our wrapper, so that our + // wrapper will unregister itself and won't keep recording metrics which leads to warnings + // about duplicate metrics + existingMetricsTracker.close(); + } userMetricsTracker = HikariSingletons.createMetricsTrackerFactory(userMetricsTracker); } }