svn merge -c 1514156 from trunk for HDFS-4898. BlockPlacementPolicyWithNodeGroup.chooseRemoteRack() fails to properly fallback to local rack.
git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/branches/branch-2@1514157 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
03420bbb4d
commit
49dcb7cfaa
|
@ -98,6 +98,9 @@ Release 2.1.1-beta - UNRELEASED
|
|||
HDFS-5051. nn fails to download checkpointed image from snn in some
|
||||
setups. (Vinay and suresh via suresh)
|
||||
|
||||
HDFS-4898. BlockPlacementPolicyWithNodeGroup.chooseRemoteRack() fails to
|
||||
properly fallback to local rack. (szetszwo)
|
||||
|
||||
Release 2.1.0-beta - 2013-08-06
|
||||
|
||||
INCOMPATIBLE CHANGES
|
||||
|
|
|
@ -189,15 +189,18 @@ public class BlockPlacementPolicyWithNodeGroup extends BlockPlacementPolicyDefau
|
|||
boolean avoidStaleNodes)
|
||||
throws NotEnoughReplicasException {
|
||||
int oldNumOfReplicas = results.size();
|
||||
// randomly choose one node from remote racks
|
||||
|
||||
final String rackLocation = NetworkTopology.getFirstHalf(
|
||||
localMachine.getNetworkLocation());
|
||||
try {
|
||||
chooseRandom(numOfReplicas, "~"+NetworkTopology.getFirstHalf(
|
||||
localMachine.getNetworkLocation()),
|
||||
excludedNodes, blocksize, maxReplicasPerRack, results, avoidStaleNodes);
|
||||
// randomly choose from remote racks
|
||||
chooseRandom(numOfReplicas, "~" + rackLocation, excludedNodes, blocksize,
|
||||
maxReplicasPerRack, results, avoidStaleNodes);
|
||||
} catch (NotEnoughReplicasException e) {
|
||||
chooseRandom(numOfReplicas-(results.size()-oldNumOfReplicas),
|
||||
localMachine.getNetworkLocation(), excludedNodes, blocksize,
|
||||
maxReplicasPerRack, results, avoidStaleNodes);
|
||||
// fall back to the local rack
|
||||
chooseRandom(numOfReplicas - (results.size() - oldNumOfReplicas),
|
||||
rackLocation, excludedNodes, blocksize,
|
||||
maxReplicasPerRack, results, avoidStaleNodes);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue