diff options
author | Harald Musum <musum@yahooinc.com> | 2023-12-13 14:17:37 +0100 |
---|---|---|
committer | Harald Musum <musum@yahooinc.com> | 2023-12-13 14:17:37 +0100 |
commit | 2b8026d12cf2b299abc5b1dfca9ff66270753a3d (patch) | |
tree | f71e2d3782122a2d46400f675d4c08f341dadc0a | |
parent | 32b8a74701ade63457977a36aaa56cdcc5ddaf0a (diff) |
Make sure to always start executor
Users on old versions will not call start, so make sure to always start executor
-rw-r--r-- | container-search/src/main/java/com/yahoo/search/logging/AbstractSpoolingLogger.java | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/logging/AbstractSpoolingLogger.java b/container-search/src/main/java/com/yahoo/search/logging/AbstractSpoolingLogger.java index 64be0556cff..1c4304f788b 100644 --- a/container-search/src/main/java/com/yahoo/search/logging/AbstractSpoolingLogger.java +++ b/container-search/src/main/java/com/yahoo/search/logging/AbstractSpoolingLogger.java @@ -8,6 +8,7 @@ import java.util.concurrent.RejectedExecutionException; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledThreadPoolExecutor; import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicBoolean; import java.util.logging.Level; /** @@ -22,6 +23,7 @@ public abstract class AbstractSpoolingLogger extends AbstractThreadedLogger impl protected static final java.util.logging.Logger log = java.util.logging.Logger.getLogger(Spooler.class.getName()); private final ScheduledExecutorService executorService; + private final AtomicBoolean executorStarted = new AtomicBoolean(false); protected final Spooler spooler; @SuppressWarnings("unused") // Used by subclasses @@ -32,11 +34,16 @@ public abstract class AbstractSpoolingLogger extends AbstractThreadedLogger impl public AbstractSpoolingLogger(Spooler spooler) { this.spooler = spooler; this.executorService = new ScheduledThreadPoolExecutor(1, new DaemonThreadFactory("AbstractSpoolingLogger-send-")); + start(); } /** Start processing files, must be called by subclasses */ public void start() { - this.executorService.scheduleWithFixedDelay(this, 0, 1L, TimeUnit.SECONDS); + // TODO: Remove guard and always start executor when we are sure all subclasses call this method (also reduce initialDelay) + if ( ! executorStarted.get()) { + this.executorService.scheduleWithFixedDelay(this, 10, 1L, TimeUnit.SECONDS); + executorStarted.set(true); + } } public void run() { |