[ 
https://issues.apache.org/jira/browse/THRIFT-3737?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15192451#comment-15192451
 ] 

ASF GitHub Bot commented on THRIFT-3737:
----------------------------------------

Github user nsuke commented on the pull request:

    https://github.com/apache/thrift/pull/945#issuecomment-196013077
  
    > I agree to obey the literal meaning of isOpen
    
    To be clear, I'm not against introducing the feature you're suggesting, 
I've just commented on the approach.
    In fact, as you may have noticed, C++ has peek() method that does 
"somewhat" similar thing.
    
    > FYI, according to 
http://code.activestate.com/recipes/408997-when-to-not-just-use-socketclose/#c5 
:
    
    It's same as the cases where read() returns 0 length, i.e. just plain old 
EOF, so you still need to check the available data.
    The urllib3 code you took is assuming that any remaining data is invalid 
(it's true in their context).


> Improve TSocket isOpen() implementation to give more accurate connection 
> status.
> --------------------------------------------------------------------------------
>
>                 Key: THRIFT-3737
>                 URL: https://issues.apache.org/jira/browse/THRIFT-3737
>             Project: Thrift
>          Issue Type: Bug
>          Components: Python - Library
>            Reporter: Cherrot Luo
>              Labels: patch
>   Original Estimate: 0h
>  Remaining Estimate: 0h
>
> h2. Description
> Typically isOpen() of TSocket.py in python lib would *ALWAYS* return true, 
> even if the underlying TCP connection has been closed or reset by the peer, 
> unless you manually invoke its close() method.
> This is because the isOpen method takes a simple but kind of "irresponsible" 
> way to judge connection status:
> {code:title=TSocket.py}
> def isOpen(self):
>     return self.handle is not None
> {code}
> This may affect the downstream lib/tools' implementation to offer a 
> *reliable* transport instance. 
> For example, in [happybase|https://github.com/wbolster/happybase] (a 
> developer-friendly Python library to interact with Apache HBase), it use 
> isOpen() to judge whether it neccessary to reopen the connection in its 
> [connection|https://github.com/wbolster/happybase/blob/9cbd718c10a3089f234f1eac1236b631e1f8e7cd/happybase/connection.py#L164]
>  and connection pool.
> h2. Fix
> I've sent a github [Pull Request|https://github.com/apache/thrift/pull/945]



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to