[
https://issues.apache.org/jira/browse/ZOOKEEPER-2188?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17884095#comment-17884095
]
Kezhu Wang commented on ZOOKEEPER-2188:
---------------------------------------
Thank you all for aware of this! ZOOKEEPER-4508 changed the dead loop to
{{KeeperState.Expired}} after approximate {{4/3}} of session timeout.
> client connection hung up because of dead loop
> -----------------------------------------------
>
> Key: ZOOKEEPER-2188
> URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2188
> Project: ZooKeeper
> Issue Type: Bug
> Components: java client
> Affects Versions: 3.5.0
> Reporter: sunhaitao
> Priority: Major
>
> There is something wrong with the client code ClientCnxn.java, it will keep
> trying to connect to server in a dead loop.
> This is my test step, shut down zookeeper cluster, exectue zkCli.sh script to
> connect to zookeeper cluster, it will keep trying to connect to zookeeper
> server without stop.
> public void run() {
> clientCnxnSocket.introduce(this, sessionId, outgoingQueue);
> clientCnxnSocket.updateNow();
> clientCnxnSocket.updateLastSendAndHeard();
> int to;
> long lastPingRwServer = Time.currentElapsedTime();
> final int MAX_SEND_PING_INTERVAL = 10000; //10 seconds
> while (state.isAlive()) {
> try {
> if (!clientCnxnSocket.isConnected()) {
> // don't re-establish connection if we are closing
> if (closing) {
> break;
> }
> startConnect();
> clientCnxnSocket.updateLastSendAndHeard();
> }
> public boolean isAlive() {
> return this != CLOSED && this != AUTH_FAILED;
> }
> because at the beginning it is CONNECTING so isAlive always returns true,
> which leads to dead loop.
> we should add some retry limit to stop this
--
This message was sent by Atlassian Jira
(v8.20.10#820010)