diff --git a/CHANGELOG.md b/CHANGELOG.md index 7567bbc4ea3..a852b3df570 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ #### Bugs * Fix #3445: TokenRefreshInterceptor throws when running incluster config * Fix #3456: io.fabric8:crd-generator README should reference crd-generator-apt instead of now removed crd-generator artifact +* Fix #3384: preventing NPE from being logged with pod execs. #### Improvements * Fix #3398: Added javadocs explaining the wait parameter diff --git a/kubernetes-client/src/main/java/io/fabric8/kubernetes/client/dsl/internal/ExecWebSocketListener.java b/kubernetes-client/src/main/java/io/fabric8/kubernetes/client/dsl/internal/ExecWebSocketListener.java index 9ec043324af..76dd2704974 100644 --- a/kubernetes-client/src/main/java/io/fabric8/kubernetes/client/dsl/internal/ExecWebSocketListener.java +++ b/kubernetes-client/src/main/java/io/fabric8/kubernetes/client/dsl/internal/ExecWebSocketListener.java @@ -175,11 +175,11 @@ public void onOpen(WebSocket webSocket, Response response) { } webSocketRef.set(webSocket); - if (!executorService.isShutdown()) { + if (in != null && !executorService.isShutdown()) { // the task will be cancelled via shutdownNow InputStreamPumper.pump(InputStreamPumper.asInterruptible(in), this::send, executorService); - startedFuture.complete(null); } + startedFuture.complete(null); } catch (IOException e) { startedFuture.completeExceptionally(new KubernetesClientException(OperationSupport.createStatus(response))); } finally { @@ -268,22 +268,27 @@ public void onClosed(WebSocket webSocket, int code, String reason) { } } + @Override public OutputStream getInput() { return input; } + @Override public InputStream getOutput() { return output; } + @Override public InputStream getError() { return error; } + @Override public InputStream getErrorChannel() { return errorChannel; } + @Override public void resize(int cols, int rows) { if (cols < 0 || rows < 0) { return;