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

Nicolas Liochon commented on HBASE-11685:
-----------------------------------------

Actually, there is no bug here: increments and decrements are done in 
??synchronized (CONNECTION_INSTANCES)?? , so they are already atomic.  There is 
no need to use atomicInteger here (a comment on the sync requirement would be 
welcome however :-) ) 

The exception is the finalize (before and after the patch): there is a set 
without synchronization.
At the end, I would propose to just remove the finalize..  It's safer and makes 
the code simpler to read. We cannot rely on a finalize to free resources anyway.

> 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, 
> HBASE-11685-trunk-v5.diff, HBASE-11685-trunk-v6.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