[
https://issues.apache.org/jira/browse/HBASE-4087?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13064629#comment-13064629
]
M. C. Srivas commented on HBASE-4087:
-------------------------------------
Hi Ted, the two versions seem very similar. I was expecting some code like the
following in HConnectionManager#deleteConnection:
{noformat}
synchronized (HBASE_INSTANCES) {
HConnectionImplementation connection = HBASE_INSTANCES
.get(connectionKey);
if (connection != null) {
connection.decCount();
+ HBASE_INSTANCES.notify();
if (connection.isZeroReference() || staleConnection) {
+ while (! connection.isZeroReference()) {
+ HBASE_INSTANCES.wait();
+ }
HBASE_INSTANCES.remove(connectionKey);
connection.close(stopProxy);
} else if (stopProxy) {
{noformat}
Is there a problem with the call to HBASE_INSTANCES.wait()? I mean, will it
hang the system as the waiting thread may hold other synchronized-blocks while
calling into HConnectionManager#deleteConnection? If so, my change above is
bogus, and we will need some sort of "connection#state" to keep track of the
fact that the connection is bad, but there are still references to it.
> HConnectionManager should perform validation of connection it hands out
> -----------------------------------------------------------------------
>
> Key: HBASE-4087
> URL: https://issues.apache.org/jira/browse/HBASE-4087
> Project: HBase
> Issue Type: Bug
> Reporter: Ted Yu
> Priority: Critical
> Fix For: 0.92.0
>
> Attachments: 4087-v2.txt, 4087.txt
>
>
> Through HBASE-3777, HConnectionManager reuses the connection to HBase servers.
> One challenge, discovered in troubleshooting HBASE-4052, is how we invalidate
> connection(s) to server which gets restarted.
> There're at least two ways.
> 1. HConnectionManager utilizes background thread(s) to periodically perform
> validation of connections in HBASE_INSTANCES and remove stale connection(s).
> 2. Allow HBaseClient (including HBaseAdmin) to provide feedback to
> HConnectionManager.
> The solution can be a combination of both of the above.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira