@Override public void beforeStop() { /* Marks the containers as being shut down and cancels all requests, but * doesn't wait for termination. */ flushRequests.shutdown(); stageRequests.shutdown(); removeRequests.shutdown(); }
@PreDestroy public void shutdown() throws InterruptedException { flushRequests.shutdown(); stageRequests.shutdown(); removeRequests.shutdown(); if (timeoutFuture != null) { timeoutFuture.cancel(false); } repository.removeListener(this); /* Waits for all requests to have finished. This is blocking to avoid that the * repository gets closed nearline storage requests have had a chance to finish. */ long deadline = System.currentTimeMillis() + 3000; if (flushRequests.awaitTermination( deadline - System.currentTimeMillis(), TimeUnit.MILLISECONDS)) { if (stageRequests.awaitTermination( deadline - System.currentTimeMillis(), TimeUnit.MILLISECONDS)) { removeRequests.awaitTermination( deadline - System.currentTimeMillis(), TimeUnit.MILLISECONDS); } } }