zookeeper-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Paul Millar (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (ZOOKEEPER-2893) very poor choice of logging if client fails to connect to server
Date Tue, 19 Sep 2017 13:28:00 GMT

    [ https://issues.apache.org/jira/browse/ZOOKEEPER-2893?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16171675#comment-16171675

Paul Millar commented on ZOOKEEPER-2893:

... just to add my 2c-worth

Sure, ClientCnxnSocket#getRemoteSocketAddress returns null; however the problem (item 3.)
is not with the return value of ClientCnxnSocket#getRemoteSocketAddress.

Rather, the problem (item 3. in the list) is that the _error message_ is built using something
that can be `null`.

The remote address is actually well-defined.  ClientCnxn certainly should know to which endpoint
it is trying to connect.

To fix this problem, the error message should include the remote endpoint using something
that cannot be null.

> very poor choice of logging if client fails to connect to server
> ----------------------------------------------------------------
>                 Key: ZOOKEEPER-2893
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2893
>             Project: ZooKeeper
>          Issue Type: Bug
>          Components: java client
>    Affects Versions: 3.4.6
>            Reporter: Paul Millar
>            Assignee: Tamas Penzes
> We are using ZooKeeper in our project and have received reports that, when suffering
a networking problem, log files become flooded with messages like:
> {quote}
> 07 Sep 2017 08:22:00 (System) [] Session 0x45d3151be3600a9 for server null, unexpected
error, closing socket connection and attempting reconnect
> java.net.NoRouteToHostException: No route to host
>         at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) ~[na:1.8.0_131]
>         at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717) ~[na:1.8.0_131]
>         at org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:361)
>         at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1081) ~[zookeeper-3.4.6.jar:3.4.6-1569965]
> {quote}
> Looking at the code that logs this message ({{ClientCnxn}}), there seems to be quite
a few problems here:
> # the code logs a stack-trace, even though there is no bug here.  In our project, we
treat all logged stack-traces as bugs,
> # if the networking issue is not fixed promptly, the log files is flooded with these
> # The message is built using {{ClientCnxnSocket#getRemoteSocketAddress}}, yet in this
case, this does not provide the expected information (yielding {{null}}),
> # The log message fails to include a description of what actually went wrong.
> (Additionally, the code uses string concatenation rather than templating when building
the message; however, this is an optimisation issue)
> My suggestion is that this log entry is updated so that it doesn't log a stack-trace,
but does include some indication why the connection failed.

This message was sent by Atlassian JIRA

View raw message