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 <[email protected]>
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 <[email protected]>
---
.../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);
}