aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2023-12-13 15:44:20 +0100
committerGitHub <noreply@github.com>2023-12-13 15:44:20 +0100
commit359a02474b6e55694b81bc2da05aaa0e920256ca (patch)
tree037b6401567f4e4ed4ed260c30dd35925ccc0650
parent401987fc52ee6ad31356f88188a6b49a787a919b (diff)
parent2b8026d12cf2b299abc5b1dfca9ff66270753a3d (diff)
Merge pull request #29637 from vespa-engine/hmusum/make-sure-to-always-start-executor
Make sure to always start executor
-rw-r--r--container-search/src/main/java/com/yahoo/search/logging/AbstractSpoolingLogger.java9
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() {