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

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

Github user nsuke commented on the pull request:

    https://github.com/apache/thrift/pull/945#issuecomment-198408886
  
    > happybase use isOpen (after all there is no other method to do so) to 
check if it need to reopen the connection
    
    isOpen call seems to be for only lazy initialization but it might not the 
point we should discuss in here.
    Just one more thing for happybase: from what I read in their [except: 
block](https://github.com/wbolster/happybase/blob/9cbd718c10a3089f234f1eac1236b631e1f8e7cd/happybase/pool.py#L141)
 I have impression that they may like your contribution.
    
    
    
    
    If happybase's pool needs something similar to urllib3's pool, it's 
perfectly possible without modifying Thrift: just store TSocket instance and 
use its `handle` attribute.
    That way, the validation can be much simpler (and yet more complete) than 
this, because you can make a lot of assumptions which are specific to your use 
case.


> 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