hadoop-common-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sangjin Lee (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HADOOP-11000) HAServiceProtocol's health state is incorrectly transitioned to SERVICE_NOT_RESPONDING
Date Mon, 25 Aug 2014 20:48:58 GMT

    [ https://issues.apache.org/jira/browse/HADOOP-11000?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14109695#comment-14109695
] 

Sangjin Lee commented on HADOOP-11000:
--------------------------------------

It's a good catch Ming. The patch looks good. If I have a minor nit, the following code doesn't
need to use if-else:

{code}
  private boolean isHealthCheckFailedException(Throwable t) {
    if ((t instanceof HealthCheckFailedException) ||
        (t instanceof RemoteException &&
        ((RemoteException)t).unwrapRemoteException(
            HealthCheckFailedException.class) instanceof
            HealthCheckFailedException)) {
      return true;
    } else {
      return false;
    }
  }
{code}

It can simply be

{code}
  private boolean isHealthCheckFailedException(Throwable t) {
    return ((t instanceof HealthCheckFailedException) ||
        (t instanceof RemoteException &&
        ((RemoteException)t).unwrapRemoteException(
            HealthCheckFailedException.class) instanceof
            HealthCheckFailedException));
  }
{code}

> HAServiceProtocol's health state is incorrectly transitioned to SERVICE_NOT_RESPONDING
> --------------------------------------------------------------------------------------
>
>                 Key: HADOOP-11000
>                 URL: https://issues.apache.org/jira/browse/HADOOP-11000
>             Project: Hadoop Common
>          Issue Type: Bug
>            Reporter: Ming Ma
>            Assignee: Ming Ma
>         Attachments: HADOOP-11000.patch
>
>
> When HAServiceProtocol.monitorHealth throws a HealthCheckFailedException, the actual
exception from protocol buffer RPC is a RemoteException that wraps the real exception. Thus
the state is incorrectly transitioned to SERVICE_NOT_RESPONDING
> {noformat}
> HealthMonitor.java
> doHealthChecks
>       try {
>         status = proxy.getServiceStatus();
>         proxy.monitorHealth();
>         healthy = true;
>       } catch (HealthCheckFailedException e) {
>         .....
>         enterState(State.SERVICE_UNHEALTHY);
>       } catch (Throwable t) {
>         .....
>         enterState(State.SERVICE_NOT_RESPONDING);
>         .....
>       }
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Mime
View raw message