in java/commons/src/main/java/com/epam/deltix/data/connectors/commons/SingleWsRestFeed.java [289:335]
protected final void doClose() {
mgmtService.execute(() -> {
if (state != STARTED_STATE) {
return;
}
state = CLOSED_STATE;
InterruptedException wasInterrupted = null;
try {
onClose();
} catch (final Throwable t) {
if (t instanceof InterruptedException) {
wasInterrupted = (InterruptedException) t;
} else {
logger().warning(() -> "Unexpected error in onClose(): " + t.getLocalizedMessage(), t);
}
}
try {
webSocket.sendClose(1000, "Bye-bye");
} finally {
try {
waitForWsClose.await(3, TimeUnit.SECONDS);
} catch (final InterruptedException e) {
wasInterrupted = e;
} finally {
wsRestExecutorService.shutdownNow();
try {
wsRestExecutorService.awaitTermination(5, TimeUnit.SECONDS);
} catch (final InterruptedException e) {
wasInterrupted = e;
}
}
if (wasInterrupted != null) {
Thread.currentThread().interrupt();
}
}
});
mgmtService.shutdown(); // to allow to execute 'close' logic
try {
mgmtService.awaitTermination(15, TimeUnit.SECONDS);
} catch (final InterruptedException e) {
Thread.currentThread().interrupt();
}
}