You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@impala.apache.org by "Doug Cameron (JIRA)" <ji...@apache.org> on 2017/05/31 02:54:04 UTC
[jira] [Created] (IMPALA-5394) Set socket timeouts while opening
TSaslTransport
Doug Cameron created IMPALA-5394:
------------------------------------
Summary: Set socket timeouts while opening TSaslTransport
Key: IMPALA-5394
URL: https://issues.apache.org/jira/browse/IMPALA-5394
Project: IMPALA
Issue Type: Improvement
Components: Backend
Affects Versions: Impala 2.8.0
Environment: Kerberos
Reporter: Doug Cameron
Assignee: John Sherman
Similar to IMPALA-3875, on a kerberized system, when the HS2 server does the initial SASL negotiation after the open, if the client never sends any data, the read() will hang and hangs the entire server port.
In detail:
{code}
- TThreadPoolServer calls getTransport() on a client from the Server
thread (the thread that does the accepts).
- TSaslServerTransport->getTransport() calls TSaslTransport->open()
- TSaslServerTransport->open() tries to negotiate SASL which calls
read/write
- If read/write blocks, the TThreadPoolServer cannot accept
connections
- This can be demonstrated by running against a kerberos enabled cluster:
nc <impala host> <hs2 port> &
then trying to connect to the hs2 port via beeline. The beeline
connection will hang until the nc process is killed.
- Can fix by setting the underlying TSocket recvTimeout and sendTimeout
before the TSaslServerTransport->open() and reset them to 0 after
open() completes.
- Consider adding sasl_connect_tcp_timeout_seconds command line option (defaults to 10, 0 to disable)
{code}
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)