Conisder the following scenario.
WE have a cluster with one NN and 2 DN.
We write some file.
One of the block is written in DN1 but not yet completed in DN2 local disk.
Now DN1 gets killed and so pipeline recovery happens for the block with the size as in DN2 but the generation stamp gets updated in the NN.
DN2 also gets killed.
Now restart NN and DN1
Now if NN restarts, the block that NN has greater time stamp but the size is lesser in the NN.
This leads to Null pointer exception in addstoredblock api