Csaba Ringhofer created THRIFT-5813:
---------------------------------------
Summary: Clarify TSocket state after isOpen
Key: THRIFT-5813
URL: https://issues.apache.org/jira/browse/THRIFT-5813
Project: Thrift
Issue Type: Improvement
Components: Python - Library
Reporter: Csaba Ringhofer
Since 0.14.0 TSocket.py tries to peek into the socket during isOpen() and
returns false if the connection seems to be disconnected (THRIFT-5248). The
question is whether to close the socket in that case - currently isOpen()
doesn't close the socket, while most clients probably expect it to be closed if
isOpen() returned false.
This makes it hard to create a "reopen if needed" logic that works both with
THttpClient and TSocket:
{code}
if not transport.isOpen():
transport.close()
transport.open()
{code}
close() throws an exception in THttpClient, while calling it is needed for
TSocket if isOpen() returned false due to the failing peek, otherwise open()
will throw TTransportException.ALREADY_OPEN
Found a ticket about the same issue in Go: THRIFT-5509
The conclusion there was to close the socket during isOpen().
--
This message was sent by Atlassian Jira
(v8.20.10#820010)