Hi Rakesh,

By the following call flow:
  SendThread#run()
    -> ZooKeeperSaslClient#initialize()
      -> ZooKeeperSaslClient#sendSaslPacket()
        -> ClientCnxn#sendPacket()
          -> SendThread#sendPacket()
            -> ClientCnxnSocketNIO#sendPacket()
It seems that the Sasl Packet has not been put into the pendingQueue after it 
is sent to the ZooKeeper Server. So when the SASL response comes, it will not 
find the corresponding Packet in the pendingQueue.

- Robin


At 2014-11-26 23:23:04, "Rakesh R" <[email protected]> wrote:
>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