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

Andrew Purtell commented on HBASE-11685:
----------------------------------------

Sorry to keep coming back to this.

{code}
      */
     boolean isZeroReference() {
-      return refCount == 0;
+      return refCount.get() == 0;
     }
{code}

We use isZeroReference to detect if a connection can be reaped. If the count 
goes negative, and it can now after these changes, then isZeroReference will 
return false and the connection will never be closed out. I really think we 
need to preserve the earlier logic. This change seems likely to introduce a new 
class of bug

> Incr/decr on the reference count of HConnectionImplementation need be atomic 
> -----------------------------------------------------------------------------
>
>                 Key: HBASE-11685
>                 URL: https://issues.apache.org/jira/browse/HBASE-11685
>             Project: HBase
>          Issue Type: Bug
>          Components: Client
>            Reporter: Liu Shaohui
>            Assignee: Liu Shaohui
>            Priority: Minor
>             Fix For: 2.0.0
>
>         Attachments: HBASE-11685-trunk-v1.diff, HBASE-11685-trunk-v2.diff, 
> HBASE-11685-trunk-v3.diff, HBASE-11685-trunk-v4.diff
>
>
> Currently, the incr/decr operation on the ref count of 
> HConnectionImplementation are not atomic. This may cause that the ref count 
> always be larger than 0 and  the connection never be closed.
> {code}
>     /**
>      * Increment this client's reference count.
>      */
>     void incCount() {
>       ++refCount;
>     }
>     /**
>      * Decrement this client's reference count.
>      */
>     void decCount() {
>       if (refCount > 0) {
>         --refCount;
>       }
>     }
> {code}



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to