HDFS-15422. Reported IBR is partially replaced with stored info when queuing. Contributed by Stephen O'Donnell and Kihwal Lee

This commit is contained in:
S O'Donnell 2021-02-24 10:29:36 +00:00
parent 924fa87010
commit 9c583f36d5

View File

@ -3211,10 +3211,11 @@ private void reportDiffSortedInner(
// If the block is an out-of-date generation stamp or state, // If the block is an out-of-date generation stamp or state,
// but we're the standby, we shouldn't treat it as corrupt, // but we're the standby, we shouldn't treat it as corrupt,
// but instead just queue it for later processing. // but instead just queue it for later processing.
// TODO: Pretty confident this should be s/storedBlock/block below, // Storing the reported block for later processing, as that is what
// since we should be postponing the info of the reported block, not // comes from the IBR / FBR and hence what we should use to compare
// the stored block. See HDFS-6289 for more context. // against the memory state.
queueReportedBlock(storageInfo, storedBlock, reportedState, // See HDFS-6289 and HDFS-15422 for more context.
queueReportedBlock(storageInfo, replica, reportedState,
QUEUE_REASON_CORRUPT_STATE); QUEUE_REASON_CORRUPT_STATE);
} else { } else {
toCorrupt.add(c); toCorrupt.add(c);
@ -4276,10 +4277,11 @@ private boolean processAndHandleReportedBlock(
// If the block is an out-of-date generation stamp or state, // If the block is an out-of-date generation stamp or state,
// but we're the standby, we shouldn't treat it as corrupt, // but we're the standby, we shouldn't treat it as corrupt,
// but instead just queue it for later processing. // but instead just queue it for later processing.
// TODO: Pretty confident this should be s/storedBlock/block below, // Storing the reported block for later processing, as that is what
// since we should be postponing the info of the reported block, not // comes from the IBR / FBR and hence what we should use to compare
// the stored block. See HDFS-6289 for more context. // against the memory state.
queueReportedBlock(storageInfo, storedBlock, reportedState, // See HDFS-6289 and HDFS-15422 for more context.
queueReportedBlock(storageInfo, block, reportedState,
QUEUE_REASON_CORRUPT_STATE); QUEUE_REASON_CORRUPT_STATE);
} else { } else {
markBlockAsCorrupt(c, storageInfo, node); markBlockAsCorrupt(c, storageInfo, node);