[ 
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

        

Reply via email to