[ 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)