[ 
https://issues.apache.org/jira/browse/HBASE-9157?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeffrey Zhong updated HBASE-9157:
---------------------------------
    Description: 
In one of integration test, I observed that a thread keeps spinning error logs 
"Unexpected exception handling blockUntilAvailable" due to 
KeeperException.ConnectionLossException. Below is the related code:

{code}    
    while (!finished) {
      try {
        data = ZKUtil.getData(zkw, znode);
      } catch(KeeperException e) {
        LOG.warn("Unexpected exception handling blockUntilAvailable", e);
      }

      if (data == null && (System.currentTimeMillis() +
        HConstants.SOCKET_RETRY_WAIT_MS < endTime)) {
        Thread.sleep(HConstants.SOCKET_RETRY_WAIT_MS);
      } else {
        finished = true;
      }
    }
{code}

ConnectionLossException might be recoverable but SessionExpiredException and 
AuthFailed are not recoverable errors, the while loop can't break.

  was:
In one of integration test, I observed that a thread keeps spinning error logs 
"Unexpected exception handling blockUntilAvailable" due to 
KeeperException.ConnectionLossException. Below is the related code:

{code}    
    while (!finished) {
      try {
        data = ZKUtil.getData(zkw, znode);
      } catch(KeeperException e) {
        LOG.warn("Unexpected exception handling blockUntilAvailable", e);
      }

      if (data == null && (System.currentTimeMillis() +
        HConstants.SOCKET_RETRY_WAIT_MS < endTime)) {
        Thread.sleep(HConstants.SOCKET_RETRY_WAIT_MS);
      } else {
        finished = true;
      }
    }
{code}

Since ConnectionLossException & SessionExpiredException are not recoverable 
errors, the while loop can't break.


> ZKUtil.blockUntilAvailable loops forever with non-recoverable errors
> --------------------------------------------------------------------
>
>                 Key: HBASE-9157
>                 URL: https://issues.apache.org/jira/browse/HBASE-9157
>             Project: HBase
>          Issue Type: Bug
>          Components: Zookeeper
>            Reporter: Jeffrey Zhong
>            Assignee: Jeffrey Zhong
>            Priority: Minor
>         Attachments: hbase-9157-v2.patch, hbase-9157.patch
>
>
> In one of integration test, I observed that a thread keeps spinning error 
> logs "Unexpected exception handling blockUntilAvailable" due to 
> KeeperException.ConnectionLossException. Below is the related code:
> {code}    
>     while (!finished) {
>       try {
>         data = ZKUtil.getData(zkw, znode);
>       } catch(KeeperException e) {
>         LOG.warn("Unexpected exception handling blockUntilAvailable", e);
>       }
>       if (data == null && (System.currentTimeMillis() +
>         HConstants.SOCKET_RETRY_WAIT_MS < endTime)) {
>         Thread.sleep(HConstants.SOCKET_RETRY_WAIT_MS);
>       } else {
>         finished = true;
>       }
>     }
> {code}
> ConnectionLossException might be recoverable but SessionExpiredException and 
> AuthFailed are not recoverable errors, the while loop can't break.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to