diff --git a/webclient/http2/src/main/java/io/helidon/webclient/http2/Http2ClientConnection.java b/webclient/http2/src/main/java/io/helidon/webclient/http2/Http2ClientConnection.java index d13a0da4c2a..71a2ff21139 100644 --- a/webclient/http2/src/main/java/io/helidon/webclient/http2/Http2ClientConnection.java +++ b/webclient/http2/src/main/java/io/helidon/webclient/http2/Http2ClientConnection.java @@ -203,8 +203,8 @@ void updateLastStreamId(int lastStreamId) { } void close() { + this.goAway(0, Http2ErrorCode.NO_ERROR, "Closing connection"); if (state.getAndSet(State.CLOSED) != State.CLOSED) { - this.goAway(0, Http2ErrorCode.NO_ERROR, "Closing connection"); try { handleTask.cancel(true); ctx.log(LOGGER, TRACE, "Closing connection"); diff --git a/webclient/http2/src/main/java/io/helidon/webclient/http2/Http2ConnectionCache.java b/webclient/http2/src/main/java/io/helidon/webclient/http2/Http2ConnectionCache.java index 3dd4f0b6f75..1550359e41e 100644 --- a/webclient/http2/src/main/java/io/helidon/webclient/http2/Http2ConnectionCache.java +++ b/webclient/http2/src/main/java/io/helidon/webclient/http2/Http2ConnectionCache.java @@ -46,7 +46,7 @@ static Http2ConnectionCache create() { @Override public void closeResource() { - if (closed.getAndSet(true)) { + if (!closed.getAndSet(true)) { List.copyOf(cache.keySet()) .forEach(this::closeAndRemove); }