When the block is under-replicated the namenode places it into
When a datanode D1 sends getBlockwork() request to the namenode, the namenode
selects another node D2 (which it thinks is up and running) where the new replica of the
under-replicated block will be stored.
Then namenode removes the block from the neededReplications list and places it to
the pendingReplications list, and then asks D1 to replicate the block to D2.
If D2 is in fact down, then replication will fail and will never be retried later, because
the block is not in the neededReplications list, but rather in the pendingReplications list,
which namenode never checks.