From 6d00e5712e3362c54061230790c279d5850aa3e5 Mon Sep 17 00:00:00 2001 From: Dmitry Kaukov Date: Mon, 30 Jan 2023 12:34:15 +1100 Subject: [PATCH 1/2] Allow override of scheduler Passing executor as parameter --- .../main/java/com/codahale/metrics/ScheduledReporter.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/metrics-core/src/main/java/com/codahale/metrics/ScheduledReporter.java b/metrics-core/src/main/java/com/codahale/metrics/ScheduledReporter.java index 5821df1c8b..b8a1666e2b 100644 --- a/metrics-core/src/main/java/com/codahale/metrics/ScheduledReporter.java +++ b/metrics-core/src/main/java/com/codahale/metrics/ScheduledReporter.java @@ -8,6 +8,7 @@ import java.util.Locale; import java.util.Set; import java.util.SortedMap; +import java.util.concurrent.Executor; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledFuture; @@ -166,7 +167,7 @@ synchronized void start(long initialDelay, long period, TimeUnit unit, Runnable throw new IllegalArgumentException("Reporter already started"); } - this.scheduledFuture = getScheduledFuture(initialDelay, period, unit, runnable); + this.scheduledFuture = getScheduledFuture(initialDelay, period, unit, runnable, executor); } @@ -177,7 +178,7 @@ synchronized void start(long initialDelay, long period, TimeUnit unit, Runnable * * Overriding this in a subclass to revert to the old behavior is permitted. */ - protected ScheduledFuture getScheduledFuture(long initialDelay, long period, TimeUnit unit, Runnable runnable) { + protected ScheduledFuture getScheduledFuture(long initialDelay, long period, TimeUnit unit, Runnable runnable, ScheduledExecutorService executor) { return executor.scheduleWithFixedDelay(runnable, initialDelay, period, unit); } From 865f60eaf0073d8328bcb10e405ba0d982400d25 Mon Sep 17 00:00:00 2001 From: Dmitry Kaukov Date: Thu, 9 Feb 2023 14:43:12 +1100 Subject: [PATCH 2/2] PR feedback --- .../com/codahale/metrics/ScheduledReporter.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/metrics-core/src/main/java/com/codahale/metrics/ScheduledReporter.java b/metrics-core/src/main/java/com/codahale/metrics/ScheduledReporter.java index b8a1666e2b..4723cdfc8c 100644 --- a/metrics-core/src/main/java/com/codahale/metrics/ScheduledReporter.java +++ b/metrics-core/src/main/java/com/codahale/metrics/ScheduledReporter.java @@ -167,10 +167,21 @@ synchronized void start(long initialDelay, long period, TimeUnit unit, Runnable throw new IllegalArgumentException("Reporter already started"); } - this.scheduledFuture = getScheduledFuture(initialDelay, period, unit, runnable, executor); + this.scheduledFuture = getScheduledFuture(initialDelay, period, unit, runnable); } + /** + * Schedule the task, and return a future. + * + * @deprecated Use {@link #getScheduledFuture(long, long, TimeUnit, Runnable, ScheduledExecutorService)} instead. + */ + @SuppressWarnings("DeprecatedIsStillUsed") + @Deprecated + protected ScheduledFuture getScheduledFuture(long initialDelay, long period, TimeUnit unit, Runnable runnable) { + return getScheduledFuture(initialDelay, period, unit, runnable, this.executor); + } + /** * Schedule the task, and return a future. * The current implementation uses scheduleWithFixedDelay, replacing scheduleWithFixedRate. This avoids queueing issues, but may