From 08573c65239d8b494b64caff2cff876711694a85 Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Fri, 22 Dec 2023 14:29:32 +0100 Subject: [PATCH] For long task timers removes entries from Dropwizard registry fixes gh-2924 --- .../instrument/dropwizard/DropwizardMeterRegistry.java | 5 +++++ .../dropwizard/DropwizardMeterRegistryTest.java | 9 +++++++++ 2 files changed, 14 insertions(+) diff --git a/micrometer-core/src/main/java/io/micrometer/core/instrument/dropwizard/DropwizardMeterRegistry.java b/micrometer-core/src/main/java/io/micrometer/core/instrument/dropwizard/DropwizardMeterRegistry.java index 992eda51ea..cc5871f658 100644 --- a/micrometer-core/src/main/java/io/micrometer/core/instrument/dropwizard/DropwizardMeterRegistry.java +++ b/micrometer-core/src/main/java/io/micrometer/core/instrument/dropwizard/DropwizardMeterRegistry.java @@ -71,6 +71,11 @@ public DropwizardMeterRegistry(DropwizardConfig config, MetricRegistry registry, private void onMeterRemoved(Meter meter) { registry.remove(hierarchicalName(meter.getId())); + if (meter instanceof LongTaskTimer) { + for (Statistic statistic : Statistic.values()) { + registry.remove(hierarchicalName(meter.getId().withTag(statistic))); + } + } } public MetricRegistry getDropwizardRegistry() { diff --git a/micrometer-core/src/test/java/io/micrometer/core/instrument/dropwizard/DropwizardMeterRegistryTest.java b/micrometer-core/src/test/java/io/micrometer/core/instrument/dropwizard/DropwizardMeterRegistryTest.java index 3e889f3c4b..21f5fcde4c 100644 --- a/micrometer-core/src/test/java/io/micrometer/core/instrument/dropwizard/DropwizardMeterRegistryTest.java +++ b/micrometer-core/src/test/java/io/micrometer/core/instrument/dropwizard/DropwizardMeterRegistryTest.java @@ -111,4 +111,13 @@ void removeShouldWork() { assertThat(registry.getDropwizardRegistry().getMeters()).isEmpty(); } + @Issue("#2924") + @Test + void removeShouldWorkForLongTaskTimer() { + LongTaskTimer timer = LongTaskTimer.builder("foo").register(registry); + assertThat(registry.getDropwizardRegistry().getGauges()).hasSize(3); + registry.remove(timer); + assertThat(registry.getDropwizardRegistry().getGauges()).isEmpty(); + } + }