Ming Ma created HDFS-9315:
-----------------------------
Summary: Update excess storage type list properly when del hint is
picked
Key: HDFS-9315
URL: https://issues.apache.org/jira/browse/HDFS-9315
Project: Hadoop HDFS
Issue Type: Improvement
Reporter: Ming Ma
HDFS-8647 makes it easier to reason about various block placement scenarios.
Here is one potential issue where {{excessTypes}} isn't updated when
{{delNodeHint}} is picked. When {{delNodeHint}} isn't picked, the excess
storage identified will be removed from excessTypes.
{noformat}
if (useDelHint(firstOne, delNodeHintStorage, addedNodeStorage,
moreThanOne, tmpExcessTypes)) {
cur = delNodeHintStorage;
} else { // regular excessive replica removal
cur = chooseReplicaToDelete((short) expectedNumOfReplicas, moreThanOne,
exactlyOne, tmpExcessTypes);
}
chooseReplicaToDelete(...) {
...
excessTypes.remove(storage.getStorageType());
}
{noformat}
It isn't clear how this can happen in real world; maybe HDFS-9314. Usually when
del hint is used, the delta between expected num replica and the actual replica
is one and thus this shouldn't cause any issue.
Still it is better to make it consistent. Each time an excess replica is
picked, excessTypes should be updated regardless whether it comes from del hint
or not.
Note this issue was there prior to HDFS-8647.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)