Hi,

Following exception is coming always for the client session 0xf49d7f31e4c0000 
in zookeeper client logs.
Client & server is using kerberoes based sasl authentication mechanism.

I'm using 3.4.6 release.

2014-11-25 22:06:19,114 INFO  [Thread-1-SendThread(vm-216:24002)] Client will 
use GSSAPI as SASL mechanism. 
org.apache.zookeeper.client.ZooKeeperSaslClient$1.run(ZooKeeperSaslClient.java:285)
2014-11-25 22:06:19,114 INFO  [Thread-1-SendThread(vm-216:24002)] Opening 
socket connection to server vm-01/**.**.**.**:24002. Will attempt to 
SASL-authenticate using Login Context section 'Client' 
org.apache.zookeeper.ClientCnxn$SendThread.logStartConnect(ClientCnxn.java:1000)
2014-11-25 22:06:19,115 INFO  [Thread-1-SendThread(vm-216:24002)] Socket 
connection established to vm-216/**.**.**.**:24002, initiating session 
org.apache.zookeeper.ClientCnxn$SendThread.primeConnection(ClientCnxn.java:855)
2014-11-25 22:06:19,116 INFO  [Thread-1-SendThread(vm-216:24002)] Session 
establishment complete on server vm-216/**.**.**.**:24002, sessionid = 
0xf49d7f31e4c0000, negotiated timeout = 90000 
org.apache.zookeeper.ClientCnxn$SendThread.onConnected(ClientCnxn.java:1260)
2014-11-25 22:06:19,118 WARN  [Thread-1-SendThread(vm-216:24002)] Session 
0xf49d7f31e4c0000 for server vm-216/**.**.**.**:24002, unexpected error, 
closing socket connection and attempting reconnect 
org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1127)
java.io.IOException: Nothing in the queue, but got 425467
                at 
org.apache.zookeeper.ClientCnxn$SendThread.readResponse(ClientCnxn.java:788)
                at 
org.apache.zookeeper.ClientCnxnSocketNIO.doIO(ClientCnxnSocketNIO.java:94)
                at 
org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:366)
                at 
org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1106)


This exception has occured in the following logic.

CilentCnxn#readResponse()

            synchronized (pendingQueue) {
                if (pendingQueue.size() == 0) {
                    throw new IOException("Nothing in the queue, but got "
                            + replyHdr.getXid());
                }
                packet = pendingQueue.remove();
            }


I failed to find the reason why 'pendingQueue' becomes empty. Only possibility 
I could see is the following condition fails and missed to add it to the 
"pendingQueue"

ClientCnxnSocketNIO.java

                    sock.write(p.bb);
                    if (!p.bb.hasRemaining()) {
                        .....
                        .....
                        .....
                        pendingQueue.add(p);
                    }

Does anyone phase similar issue and would appreciate any help. Thanks!

Thanks & Regards,
Rakesh

Reply via email to