summaryrefslogtreecommitdiffstats
path: root/zkfacade/src
diff options
context:
space:
mode:
authorJon Marius Venstad <venstad@gmail.com>2022-03-10 21:48:06 +0100
committerJon Marius Venstad <venstad@gmail.com>2022-03-10 21:48:06 +0100
commit63080b76428cd175b7ed4ef1c683393bf0fa8f2f (patch)
treea31a12dc9b4064c6313e596fe0beb2071b8b6a36 /zkfacade/src
parent9ecddda1e37238420a0b1fe65ba701fdf79283cb (diff)
Give the Curator 10s to shut down
Diffstat (limited to 'zkfacade/src')
-rw-r--r--zkfacade/src/main/java/com/yahoo/vespa/curator/Curator.java19
1 files changed, 18 insertions, 1 deletions
diff --git a/zkfacade/src/main/java/com/yahoo/vespa/curator/Curator.java b/zkfacade/src/main/java/com/yahoo/vespa/curator/Curator.java
index 2b5395773ee..ae10502e569 100644
--- a/zkfacade/src/main/java/com/yahoo/vespa/curator/Curator.java
+++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/Curator.java
@@ -4,6 +4,7 @@ package com.yahoo.vespa.curator;
import com.google.inject.Inject;
import com.yahoo.cloud.config.CuratorConfig;
import com.yahoo.component.AbstractComponent;
+import com.yahoo.concurrent.DaemonThreadFactory;
import com.yahoo.path.Path;
import com.yahoo.vespa.curator.api.VespaCurator;
import com.yahoo.vespa.curator.recipes.CuratorCounter;
@@ -35,9 +36,16 @@ import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
+import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
import java.util.function.Function;
+import java.util.logging.Level;
import java.util.logging.Logger;
/**
@@ -313,7 +321,16 @@ public class Curator extends AbstractComponent implements VespaCurator, AutoClos
@Override
public void close() {
- curatorFramework.close();
+ ExecutorService executor = Executors.newSingleThreadExecutor(new DaemonThreadFactory("curator-shutdown"));
+ Future<?> shutdown = CompletableFuture.runAsync(curatorFramework::close, executor);
+ try {
+ shutdown.get(10, TimeUnit.SECONDS);
+ }
+ catch (Exception e) {
+ LOG.log(Level.WARNING, "Failed shutting down curator framework (within 10 seconds)", e);
+ if (e instanceof InterruptedException) Thread.currentThread().interrupt();
+ }
+ executor.shutdownNow();
}
@Override