[ https://issues.apache.org/jira/browse/HADOOP-4388?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Robert Chansler updated HADOOP-4388: ------------------------------------ Component/s: dfs > Bug in Datanode transferBlocks code > ----------------------------------- > > Key: HADOOP-4388 > URL: https://issues.apache.org/jira/browse/HADOOP-4388 > Project: Hadoop Core > Issue Type: Bug > Components: dfs > Reporter: Suresh Srinivas > Assignee: Suresh Srinivas > > In the following code, when the blocks to be transferred has an invalid > block, all the blocks that follow it are also not transferred. That might not > be the intended behavior. Instead of breaking out of the loop, perhaps the > right thing to do is to ignore the invalid block and continue with > transferring the rest. > {noformat} > private void transferBlocks( Block blocks[], > DatanodeInfo xferTargets[][] > ) throws IOException { > for (int i = 0; i < blocks.length; i++) { > if (!data.isValidBlock(blocks[i])) { > String errStr = "Can't send invalid block " + blocks[i]; > LOG.info(errStr); > namenode.errorReport(dnRegistration, > DatanodeProtocol.INVALID_BLOCK, > errStr); > // > // ******** This should be continue instead of break? > // > break; > } > int numTargets = xferTargets[i].length; > if (numTargets > 0) { > if (LOG.isInfoEnabled()) { > StringBuilder xfersBuilder = new StringBuilder(); > for (int j = 0; j < numTargets; j++) { > DatanodeInfo nodeInfo = xferTargets[i][j]; > xfersBuilder.append(nodeInfo.getName()); > if (j < (numTargets - 1)) { > xfersBuilder.append(", "); > } > } > String xfersTo = xfersBuilder.toString(); > LOG.info(dnRegistration + " Starting thread to transfer block " + > blocks[i] + " to " + xfersTo); > } > new Daemon(new DataTransfer(xferTargets[i], blocks[i], this)).start(); > } > } > } > {noformat} -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.