[
https://issues.apache.org/jira/browse/HBASE-11685?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14093521#comment-14093521
]
Andrew Purtell commented on HBASE-11685:
----------------------------------------
> is the earlier logic just the current codebase?
What I mean by that is this:
{code}
void decCount() {
if (refCount > 0) {
--refCount;
}
}
{code}
This code does not allow the reference count to go below 0, which is what
isZeroReference expects. The latest patch allows the reference count to go
below 0 without changing isZeroReference or its callers to handle cases where
the refcount is negative.
> When the count goes negative, we should print warn log or throw an exception.
Throwing an exception after insuring the connection is cleaned up is good, that
would address the concern here.
> 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)