summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Marius Venstad <venstad@gmail.com>2020-10-23 14:46:06 +0200
committerJon Marius Venstad <venstad@gmail.com>2020-10-23 14:46:06 +0200
commite0b43fe70ec272d269da74514500b3588ffec51b (patch)
tree00834a4bd66bdeacaf0a1046b4772d1ce28949f8
parent917efac9c88cdbf71f3aed1489ed911b4bde75d7 (diff)
Destroy async session during shutdown
-rw-r--r--vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java14
1 files changed, 10 insertions, 4 deletions
diff --git a/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java b/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java
index 5408d64f0af..4fdac7b584a 100644
--- a/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java
+++ b/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java
@@ -244,13 +244,19 @@ public class DocumentV1ApiHandler extends AbstractRequestHandler {
@Override
public void destroy() {
executor.shutdown();
+ Instant doom = clock.instant().plus(Duration.ofSeconds(20));
+ while ( ! operations.isEmpty() && clock.instant().isBefore(doom))
+ dispatchEnqueued();
+
+ if ( ! operations.isEmpty())
+ log.log(WARNING, "Failed to empty request queue before shutdown timeout — " + operations.size() + " requests left");
+
+ asyncSession.destroy();
visits.values().forEach(VisitorSession::destroy);
+
try {
- if ( ! executor.awaitTermination(10, TimeUnit.SECONDS)) {
+ if ( ! executor.awaitTermination(Duration.between(clock.instant(), doom).toMillis(), TimeUnit.MILLISECONDS))
executor.shutdownNow();
- if ( ! executor.awaitTermination(10, TimeUnit.SECONDS))
- log.log(WARNING, "Failed shutting down /document/v1 executor within 20 seconds");
- }
}
catch (InterruptedException e) {
log.log(WARNING, "Interrupted waiting for /document/v1 executor to shut down");