AMC-team created HDFS-15439:
-------------------------------

             Summary: dfs.mover.retry.max.attempts should not accept negative 
value 
                 Key: HDFS-15439
                 URL: https://issues.apache.org/jira/browse/HDFS-15439
             Project: Hadoop HDFS
          Issue Type: Bug
          Components: balancer & mover
            Reporter: AMC-team


Configuration parameter "dfs.mover.retry.max.attempts" is to define the maximum 
number of retries before the mover consider the move failed. There is no 
checking code so this parameter can accept any int value.

Theoratically, setting this value to <=0 should mean that no retry at all. 
However, if you set the value to negative value. The checking condition for 
retry failed will never satisfied because the if statement is "*if 
(retryCount.get() == retryMaxAttempts)*". The code is in Mover.java.
{code:java}
private Result processNamespace() throws IOException {
      ... //wait for pending move to finish and retry the failed migration
      if (hasFailed && !hasSuccess) {
        if (retryCount.get() == retryMaxAttempts) { // retryMaxAttempts < 0
          result.setRetryFailed();
          LOG.error("Failed to move some block's after "
              + retryMaxAttempts + " retries.");
          return result;
        } else {
          retryCount.incrementAndGet();
        }
      } else {
        // Reset retry count if no failure.
        retryCount.set(0);
      }
      ...
    }
{code}

*How to fix*

Add checking code of "dfs.mover.retry.max.attempts" to accept only non-negative 
value or change the if statement condition when retry count exceeds max 
attempts. 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: hdfs-dev-unsubscr...@hadoop.apache.org
For additional commands, e-mail: hdfs-dev-h...@hadoop.apache.org

Reply via email to