From d710925cc7b2c9ba098caf354a43d72fae70f260 Mon Sep 17 00:00:00 2001 From: Noemi Praml Date: Mon, 17 Oct 2022 15:31:30 +0200 Subject: [PATCH 1/2] possible Fix --- .../server/executor/DefaultBackgroundExecutor.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/executor/DefaultBackgroundExecutor.java b/ebean-core/src/main/java/io/ebeaninternal/server/executor/DefaultBackgroundExecutor.java index d7975e04b..47271bc38 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/executor/DefaultBackgroundExecutor.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/executor/DefaultBackgroundExecutor.java @@ -106,23 +106,23 @@ public final class DefaultBackgroundExecutor implements SpiBackgroundExecutor { @Override public ScheduledFuture scheduleWithFixedDelay(Runnable task, long initialDelay, long delay, TimeUnit unit) { - return schedulePool.scheduleWithFixedDelay(wrap(logExceptions(task)), initialDelay, delay, unit); + return schedulePool.scheduleWithFixedDelay(logExceptions(task), initialDelay, delay, unit); } @Override public ScheduledFuture scheduleAtFixedRate(Runnable task, long initialDelay, long delay, TimeUnit unit) { - return schedulePool.scheduleAtFixedRate(wrap(logExceptions(task)), initialDelay, delay, unit); + return schedulePool.scheduleAtFixedRate(logExceptions(task), initialDelay, delay, unit); } @Override public ScheduledFuture schedule(Runnable task, long delay, TimeUnit unit) { - return schedulePool.schedule(wrap(logExceptions(task)), delay, unit); + return schedulePool.schedule(logExceptions(task), delay, unit); } @Override public ScheduledFuture schedule(Callable task, long delay, TimeUnit unit) { // Note: No "logExceptions" as we expect Future.get() by the invoker - return schedulePool.schedule(wrap(task), delay, unit); + return schedulePool.schedule(task, delay, unit); } @Override From c855df8b8d6f707b11da03de2126abc6e5901581 Mon Sep 17 00:00:00 2001 From: Noemi Praml Date: Tue, 18 Oct 2022 07:59:19 +0200 Subject: [PATCH 2/2] javadoc --- .../main/java/io/ebean/config/BackgroundExecutorWrapper.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ebean-api/src/main/java/io/ebean/config/BackgroundExecutorWrapper.java b/ebean-api/src/main/java/io/ebean/config/BackgroundExecutorWrapper.java index b290e5863..28081c30f 100644 --- a/ebean-api/src/main/java/io/ebean/config/BackgroundExecutorWrapper.java +++ b/ebean-api/src/main/java/io/ebean/config/BackgroundExecutorWrapper.java @@ -6,6 +6,10 @@ import java.util.concurrent.Callable; * BackgroundExecutorWrapper that can be used to wrap tasks that are sent to background (i.e. another thread). * It should copy all necessary thread-local variables. See {@link MdcBackgroundExecutorWrapper} for implementation details. * + * Note: only tasks that are executed immediately (submit, execute) are wrapped. Periodic or scheduled tasks are not wrapped, + * as these may keep copied variables in memory either forever or until the scheduled task is finished. + * The caller is responsible to handle these cases. + * * @author Roland Praml, FOCONIS AG */ public interface BackgroundExecutorWrapper {