Csaba Ringhofer has uploaded this change for review. ( http://gerrit.cloudera.org:8080/22368
Change subject: IMPALA-13680: Avoid flush() when closing TSSLSocket ...................................................................... IMPALA-13680: Avoid flush() when closing TSSLSocket Closing the transports could hang in TAcceptQueueServer if there was an error during SSL handshake. As the TSSLSocket is wrapped in TBufferedTransport and TBufferedTransport::close() calls flush(), TSSLSocket::flush() was also called that led to trying again the handshake in an unclean state. This led to hanging indefinitely with OpenSSL 3.2. Another potential error is that if flush throws an exception then the underlying TTransport's close() wont' be called. Ideally this would be solved in Thrift (THRIFT-5846). As quick fix this change adds a subclass for BufferedTransport that doesn't call flush(). This is safe to do as generated TProcessor subclasses call flush() every time when the client/server sends a message. Testing: - the issue was caught by thrift-server-test/KerberosOnAndOff and TestClientSsl::test_ssl hanging till killed Change-Id: I4879a1567f7691711d73287269bf87f2946e75d2 --- M be/src/rpc/auth-provider.h M be/src/rpc/authentication.cc M be/src/rpc/thrift-client.h M be/src/rpc/thrift-server.h M be/src/transport/TSaslServerTransport.cpp 5 files changed, 29 insertions(+), 10 deletions(-) git pull ssh://gerrit.cloudera.org:29418/Impala-ASF refs/changes/68/22368/1 -- To view, visit http://gerrit.cloudera.org:8080/22368 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-Project: Impala-ASF Gerrit-Branch: master Gerrit-MessageType: newchange Gerrit-Change-Id: I4879a1567f7691711d73287269bf87f2946e75d2 Gerrit-Change-Number: 22368 Gerrit-PatchSet: 1 Gerrit-Owner: Csaba Ringhofer <[email protected]>
