diff options
Diffstat (limited to 'jdisc_core/src/main/java/com/yahoo/jdisc/core/ContainerWatchdog.java')
-rw-r--r-- | jdisc_core/src/main/java/com/yahoo/jdisc/core/ContainerWatchdog.java | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/core/ContainerWatchdog.java b/jdisc_core/src/main/java/com/yahoo/jdisc/core/ContainerWatchdog.java index 592ed5f7c3c..f28d5ea2b26 100644 --- a/jdisc_core/src/main/java/com/yahoo/jdisc/core/ContainerWatchdog.java +++ b/jdisc_core/src/main/java/com/yahoo/jdisc/core/ContainerWatchdog.java @@ -48,7 +48,9 @@ class ContainerWatchdog implements ContainerWatchdogMetrics, AutoCloseable { private Instant currentContainerActivationTime; private int numStaleContainers; private Instant lastLogTime; - private ScheduledFuture<?> previousThreadMonitoringTask; + private ScheduledFuture<?> threadMonitoringTask; + private ScheduledFuture<?> containerMontoringTask; + ContainerWatchdog() { this(new ScheduledThreadPoolExecutor( @@ -65,7 +67,11 @@ class ContainerWatchdog implements ContainerWatchdogMetrics, AutoCloseable { this.scheduler = scheduler; this.clock = clock; this.lastLogTime = clock.instant(); - scheduler.scheduleAtFixedRate(this::monitorDeactivatedContainers, CONTAINER_CHECK_PERIOD.getSeconds(), CONTAINER_CHECK_PERIOD.getSeconds(), TimeUnit.SECONDS); + } + + void start() { + this.containerMontoringTask = scheduler.scheduleAtFixedRate(this::monitorDeactivatedContainers, + CONTAINER_CHECK_PERIOD.getSeconds(), CONTAINER_CHECK_PERIOD.getSeconds(), TimeUnit.SECONDS); } @Override @@ -79,8 +85,8 @@ class ContainerWatchdog implements ContainerWatchdogMetrics, AutoCloseable { @Override public void close() throws InterruptedException { - scheduler.shutdownNow(); - scheduler.awaitTermination(1, TimeUnit.MINUTES); + if (containerMontoringTask != null) containerMontoringTask.cancel(false); + if (threadMonitoringTask != null) threadMonitoringTask.cancel(false); synchronized (monitor) { deactivatedContainers.clear(); currentContainer = null; @@ -95,8 +101,8 @@ class ContainerWatchdog implements ContainerWatchdogMetrics, AutoCloseable { } currentContainer = nextContainer; currentContainerActivationTime = clock.instant(); - if (previousThreadMonitoringTask != null) previousThreadMonitoringTask.cancel(false); - previousThreadMonitoringTask = scheduler.schedule(this::monitorThreads, 1, TimeUnit.MINUTES); + if (threadMonitoringTask != null) threadMonitoringTask.cancel(false); + threadMonitoringTask = scheduler.schedule(this::monitorThreads, 1, TimeUnit.MINUTES); } } |