diff --git a/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/Engine.java b/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/Engine.java index 49050676e9..4c53138e91 100644 --- a/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/Engine.java +++ b/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/Engine.java @@ -332,7 +332,9 @@ public void close() throws Exception if (config.drainOnClose()) { - workers.forEach(EngineWorker::drain); + workers.stream() + .filter(worker -> !worker.runner().isClosed()) + .forEach(EngineWorker::drain); } final List errors = new ArrayList<>(); diff --git a/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/internal/registry/EngineWorker.java b/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/internal/registry/EngineWorker.java index 62e409e26d..36c09db9e9 100644 --- a/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/internal/registry/EngineWorker.java +++ b/runtime/engine/src/main/java/io/aklivity/zilla/runtime/engine/internal/registry/EngineWorker.java @@ -881,6 +881,12 @@ public void doClose() } finally { + targetsByIndex.forEach((k, v) -> quietClose(v)); + quietClose(streamsLayout); + quietClose(bufferPoolLayout); + debitorsByIndex.forEach((k, v) -> quietClose(v)); + quietClose(creditor); + quietClose(eventWriter); thread = null; } } @@ -1058,14 +1064,6 @@ public void onClose() } targetsByIndex.forEach((k, v) -> v.detach()); - targetsByIndex.forEach((k, v) -> quietClose(v)); - - quietClose(streamsLayout); - quietClose(bufferPoolLayout); - - debitorsByIndex.forEach((k, v) -> quietClose(v)); - quietClose(creditor); - quietClose(eventWriter); if (acquiredBuffers != 0 || acquiredCreditors != 0 || acquiredDebitors != 0L) {