mirror of
https://github.com/apache/impala.git
synced 2026-01-06 06:01:03 -05:00
We use socket timeouts for our backend connections. We set these timeouts only after we've open()'d the connection, which ideally should be fine. However, our TSaslTransport stack does read()'s and write()'s over the network on an open(), which means that on a secure cluster we send and recieve non-TCP-handshake packets on open(). This is because the current code tries to establish a SASL handshake during open(). If for any reason the peer server does not respond to the read()'s during the open() call (after connect() is successful), the client will wait on read() indefinitely. This patch sets the socket timeout before we call open(), so that the read()'s and write()'s during the open() are subject to the timeout as well. We should also consider making a larger change where this SASL handshake does not take place during an open(), but instead after the open() call is completed, so as to have the open() semantics be the same for both secure and insecure clusters. Change-Id: I6c8f91a88f723e0e58e81bb385c5a8f190021868 Reviewed-on: http://gerrit.cloudera.org:8080/5263 Reviewed-by: Sailesh Mukil <sailesh@cloudera.com> Tested-by: Internal Jenkins