This affects only simulated datanodes.
When a SimulatedDataNode sends block report, it includes the blocks that are currently being written. The reported size of such blocks is the default blocks size (64MB). NameNode assumes it is a real block. When the datanodes report the block when the writing finishes, NameNode rejects those blocks unless the size is same as 64MB. This bug always existed but only since 0.18, NameNode started rejecting blocks that are smaller than largest size reported by any datanode. Even replication attempts fail.
The fix is to exclude blocks that are not "finalized" at the datanode in the block report from simulated datanodes. I will attach a patch.