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