|
@@ -45,11 +45,19 @@ public class AvailableSpaceVolumeChoosingPolicy<V extends FsVolumeSpi>
|
|
|
|
|
|
private static final Log LOG = LogFactory.getLog(AvailableSpaceVolumeChoosingPolicy.class);
|
|
private static final Log LOG = LogFactory.getLog(AvailableSpaceVolumeChoosingPolicy.class);
|
|
|
|
|
|
- private static final Random RAND = new Random();
|
|
|
|
|
|
+ private final Random random;
|
|
|
|
|
|
private long balancedSpaceThreshold = DFS_DATANODE_AVAILABLE_SPACE_VOLUME_CHOOSING_POLICY_BALANCED_SPACE_THRESHOLD_DEFAULT;
|
|
private long balancedSpaceThreshold = DFS_DATANODE_AVAILABLE_SPACE_VOLUME_CHOOSING_POLICY_BALANCED_SPACE_THRESHOLD_DEFAULT;
|
|
private float balancedPreferencePercent = DFS_DATANODE_AVAILABLE_SPACE_VOLUME_CHOOSING_POLICY_BALANCED_SPACE_PREFERENCE_FRACTION_DEFAULT;
|
|
private float balancedPreferencePercent = DFS_DATANODE_AVAILABLE_SPACE_VOLUME_CHOOSING_POLICY_BALANCED_SPACE_PREFERENCE_FRACTION_DEFAULT;
|
|
|
|
|
|
|
|
+ AvailableSpaceVolumeChoosingPolicy(Random random) {
|
|
|
|
+ this.random = random;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public AvailableSpaceVolumeChoosingPolicy() {
|
|
|
|
+ this(new Random());
|
|
|
|
+ }
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
public synchronized void setConf(Configuration conf) {
|
|
public synchronized void setConf(Configuration conf) {
|
|
balancedSpaceThreshold = conf.getLong(
|
|
balancedSpaceThreshold = conf.getLong(
|
|
@@ -128,7 +136,7 @@ public class AvailableSpaceVolumeChoosingPolicy<V extends FsVolumeSpi>
|
|
(highAvailableVolumes.size() * balancedPreferencePercent) /
|
|
(highAvailableVolumes.size() * balancedPreferencePercent) /
|
|
preferencePercentScaler;
|
|
preferencePercentScaler;
|
|
if (mostAvailableAmongLowVolumes < replicaSize ||
|
|
if (mostAvailableAmongLowVolumes < replicaSize ||
|
|
- RAND.nextFloat() < scaledPreferencePercent) {
|
|
|
|
|
|
+ random.nextFloat() < scaledPreferencePercent) {
|
|
volume = roundRobinPolicyHighAvailable.chooseVolume(
|
|
volume = roundRobinPolicyHighAvailable.chooseVolume(
|
|
highAvailableVolumes,
|
|
highAvailableVolumes,
|
|
replicaSize);
|
|
replicaSize);
|