JiraUser created HDFS-15438: ------------------------------- Summary: dfs.disk.balancer.max.disk.errors = 0 will fail the block copy Key: HDFS-15438 URL: https://issues.apache.org/jira/browse/HDFS-15438 Project: Hadoop HDFS Issue Type: Bug Components: balancer & mover Reporter: JiraUser
In HDFS disk balancer, the config parameter "dfs.disk.balancer.max.disk.errors" is to control the value of maximum number of errors we can ignore for a specific move between two disks before it is abandoned. >From the checking code, the parameter can accept value that >= 0. And setting >the value to 0 should mean no error tolerance. However, in current code >implementation in DiskBalancer.java. Setting the value to 0 will simple don't >do the block copy. {code:java} // Gets the next block that we can copy private ExtendedBlock getBlockToCopy(FsVolumeSpi.BlockIterator iter, DiskBalancerWorkItem item) { while (!iter.atEnd() && item.getErrorCount() < getMaxError(item)) { //getMaxError = 0 try { ... //get the block } catch (IOException e) { item.incErrorCount(); } if (item.getErrorCount() >= getMaxError(item)) { item.setErrMsg("Error count exceeded."); LOG.info("Maximum error count exceeded. Error count: {} Max error:{} ", item.getErrorCount(), item.getMaxDiskErrors()); } {code} *How to fix* Change the while loop condition and the following if statement condition to support value 0. -- 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