Jinghui Wang created HDFS-6223:
----------------------------------
Summary: Using the command setrep to set the replication factor
more than the number of datanodes with the -w parameter, the command gets in a
infinite loop.
Key: HDFS-6223
URL: https://issues.apache.org/jira/browse/HDFS-6223
Project: Hadoop HDFS
Issue Type: Improvement
Components: hdfs-client
Affects Versions: 2.3.0, 2.2.0, 2.1.1-beta
Reporter: Jinghui Wang
Assignee: Jinghui Wang
Using the command setrep to set the replication factor more than the number of
datanodes with the -w parameter gets in a infinite loop. When the -w parameter
is there, the command gets in the following code to wait for the replication
factor to be met before exiting. But if the number of datanodes is less than
the desired replication factor, the exiting condition is never met.
A proposed fix is to add a timeout parameter, so the command will wait for a
certain amount of time or number of tries before exiting.
for(boolean done = false; !done; ) {
BlockLocation[] locations = fs.getFileBlockLocations(status, 0, len);
int i = 0;
for(; i < locations.length &&
locations[i].getHosts().length == rep; i++)
if (!printWarning && locations[i].getHosts().length > rep) {
System.out.println("\nWARNING: the waiting time may be long for "
+ "DECREASING the number of replication.");
printWarning = true;
}
done = i == locations.length;
if (!done) {
System.out.print(".");
System.out.flush();
try {Thread.sleep(10000);} catch (InterruptedException e) {}
}
}
--
This message was sent by Atlassian JIRA
(v6.2#6252)