This is an automated email from the ASF dual-hosted git repository. achennaka pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/kudu.git
The following commit(s) were added to refs/heads/master by this push: new fde29c3aa [java] fix NPE in Connection::exceptionCaught() fde29c3aa is described below commit fde29c3aa1bdf1d46b093207e56e955f7b05f151 Author: Alexey Serbin <ale...@apache.org> AuthorDate: Thu Jan 4 10:06:17 2024 -0800 [java] fix NPE in Connection::exceptionCaught() Before this patch, an NPE might be thrown by the Java Kudu client when trying to establish a connection to a Kudu server. I have a test scenario to reproduce the issue, but it requires a lot of latency and failure injection on the server side, which I'm not going to add just to reproduce this issue. However, the issue is real and might be hit in field when Kudu servers run on very busy nodes, sharing the node's CPU and memory resources with many other active processes, and Kudu's acceptor thread might be often de-scheduled, so a long queue of pending connections grows at the server's RPC socket. It's quite clear the code before this patch had the corresponding deficiency, so I think this patch is good to go without adding a test that reproducing the issue. If I can eventually justify adding all the latency and failure injection at the server side, I'll add the corresponding test as well in a follow-up patch. Change-Id: Ibd6eed2ecdcadab7eaff301f3a3f3d5dcacfd83d Reviewed-on: http://gerrit.cloudera.org:8080/20858 Tested-by: Kudu Jenkins Reviewed-by: Abhishek Chennaka <achenn...@cloudera.com> --- .../kudu-client/src/main/java/org/apache/kudu/client/Connection.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/java/kudu-client/src/main/java/org/apache/kudu/client/Connection.java b/java/kudu-client/src/main/java/org/apache/kudu/client/Connection.java index cd8ad8c3e..c495b0d5d 100644 --- a/java/kudu-client/src/main/java/org/apache/kudu/client/Connection.java +++ b/java/kudu-client/src/main/java/org/apache/kudu/client/Connection.java @@ -445,8 +445,9 @@ class Connection extends SimpleChannelInboundHandler<Object> { // If the connection was explicitly disconnected via a call to disconnect(), we should // have either gotten a ClosedChannelException or an SSLException. assert !explicitlyDisconnected; - String message = String.format("%s unexpected exception from downstream on %s", - getLogPrefix(), ctx.channel()); + String channelInfo = ctx == null ? "" : String.format(" on %s", ctx.channel()); + String message = String.format( + "%s unexpected exception from downstream%s", getLogPrefix(), channelInfo); error = new RecoverableException(Status.NetworkError(message), e); LOG.error(message, e); }