From 4292f894d83ffbed6f97dcf9388c73086e695b2a Mon Sep 17 00:00:00 2001 From: Marc Nuri Date: Fri, 28 Apr 2023 10:13:17 +0200 Subject: [PATCH] fix: prevent runtime issues when running with Vert.x HTTP client in native mode Signed-off-by: Marc Nuri --- CHANGELOG.md | 1 + .../kubernetes/client/vertx/InputStreamReadStream.java | 7 ++++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b5a47495e22..7545deb40be 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,7 @@ * fix #5036: Better websocket error handling for protocol / client enforced errors, also update frame/message limits * Fix #5044: disable Vert.x instance file caching * Fix #5059: Vert.x InputStreamReader uses an empty Buffer sentinel to avoid NPE +* Fix #5085: Vert.x HTTP Client InputStreamReadStream works in Native mode #### Improvements * Fix #4434: Update CronJobIT to use `batch/v1` CronJob instead diff --git a/httpclient-vertx/src/main/java/io/fabric8/kubernetes/client/vertx/InputStreamReadStream.java b/httpclient-vertx/src/main/java/io/fabric8/kubernetes/client/vertx/InputStreamReadStream.java index 54c7ad11b5d..246e5bf803c 100644 --- a/httpclient-vertx/src/main/java/io/fabric8/kubernetes/client/vertx/InputStreamReadStream.java +++ b/httpclient-vertx/src/main/java/io/fabric8/kubernetes/client/vertx/InputStreamReadStream.java @@ -30,10 +30,10 @@ class InputStreamReadStream implements ReadStream { - private static final Buffer END_SENTINEL = Buffer.buffer(); private static final int CHUNK_SIZE = 2048; private static final int MAX_DEPTH = 8; + private final Buffer endSentinel; private final VertxHttpRequest vertxHttpRequest; private final InputStream is; private final HttpClientRequest request; @@ -46,6 +46,7 @@ public InputStreamReadStream(VertxHttpRequest vertxHttpRequest, InputStream is, this.vertxHttpRequest = vertxHttpRequest; this.is = is; this.request = request; + endSentinel = Buffer.buffer(); } @Override @@ -72,7 +73,7 @@ public ReadStream handler(Handler handler) { } if (handler != null) { inboundBuffer.handler(buff -> { - if (buff == END_SENTINEL) { + if (buff == endSentinel) { if (endHandler != null) { endHandler.handle(null); } @@ -133,7 +134,7 @@ private void readChunk2() { // Full } } else { - inboundBuffer.write(END_SENTINEL); + inboundBuffer.write(endSentinel); } } else { if (exceptionHandler != null) {