You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@zookeeper.apache.org by "sunhaitao (JIRA)" <ji...@apache.org> on 2015/05/11 13:07:01 UTC

[jira] [Created] (ZOOKEEPER-2188) client connection hung up because of dead loop

sunhaitao created ZOOKEEPER-2188:
------------------------------------

             Summary: 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


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
(v6.3.4#6332)