summaryrefslogtreecommitdiffstats
path: root/vespaclient-container-plugin
diff options
context:
space:
mode:
authorJon Marius Venstad <venstad@gmail.com>2020-10-07 17:25:55 +0200
committerJon Marius Venstad <venstad@gmail.com>2020-10-07 17:25:55 +0200
commit958ff2da163fbe254b7baae7522c845ecfef38ad (patch)
treefb21d25ef3f148b9d5c88dfc3188c9d32684ed63 /vespaclient-container-plugin
parent322f2c1d29e55aa798037193a4f13a48a137484f (diff)
Shut down executor and use named thread
Diffstat (limited to 'vespaclient-container-plugin')
-rw-r--r--vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/DocumentOperationExecutorImpl.java4
1 files changed, 3 insertions, 1 deletions
diff --git a/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/DocumentOperationExecutorImpl.java b/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/DocumentOperationExecutorImpl.java
index 79c63522686..1ebef129477 100644
--- a/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/DocumentOperationExecutorImpl.java
+++ b/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/DocumentOperationExecutorImpl.java
@@ -86,7 +86,7 @@ public class DocumentOperationExecutorImpl implements DocumentOperationExecutor
private final DelayQueue throttled;
private final DelayQueue timeouts;
private final Map<VisitorControlHandler, VisitorSession> visits = new ConcurrentHashMap<>();
- private final Executor visitSessionShutdownExecutor = Executors.newSingleThreadExecutor();
+ private final ExecutorService visitSessionShutdownExecutor = Executors.newSingleThreadExecutor(new DaemonThreadFactory("visit-session-shutdown-"));
public DocumentOperationExecutorImpl(ClusterListConfig clustersConfig, AllClustersBucketSpacesConfig bucketsConfig,
DocumentOperationExecutorConfig executorConfig, DocumentAccess access, Clock clock) {
@@ -152,6 +152,7 @@ public class DocumentOperationExecutorImpl implements DocumentOperationExecutor
@Override
public void shutdown() {
long shutdownMillis = clock.instant().plusSeconds(20).toEpochMilli();
+ visitSessionShutdownExecutor.shutdown();
visits.values().forEach(VisitorSession::destroy);
Future<?> throttleShutdown = throttled.shutdown(Duration.ofSeconds(10),
context -> context.error(OVERLOAD, "Retry on overload failed due to shutdown"));
@@ -160,6 +161,7 @@ public class DocumentOperationExecutorImpl implements DocumentOperationExecutor
try {
throttleShutdown.get(Math.max(0, shutdownMillis - clock.millis()), TimeUnit.MILLISECONDS);
timeoutShutdown.get(Math.max(0, shutdownMillis - clock.millis()), TimeUnit.MILLISECONDS);
+ visitSessionShutdownExecutor.awaitTermination(Math.max(0, shutdownMillis - clock.millis()), TimeUnit.MILLISECONDS);
}
catch (InterruptedException | ExecutionException | TimeoutException e) {
throttleShutdown.cancel(true);