diff options
author | Jon Marius Venstad <venstad@gmail.com> | 2020-10-23 14:46:06 +0200 |
---|---|---|
committer | Jon Marius Venstad <venstad@gmail.com> | 2020-10-23 14:46:06 +0200 |
commit | e0b43fe70ec272d269da74514500b3588ffec51b (patch) | |
tree | 00834a4bd66bdeacaf0a1046b4772d1ce28949f8 | |
parent | 917efac9c88cdbf71f3aed1489ed911b4bde75d7 (diff) |
Destroy async session during shutdown
-rw-r--r-- | vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java | 14 |
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"); |