Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
2.2.0
-
None
-
None
-
Reviewed
Description
In a cluster with non-HA setup and dfs.persist.blocks set to false, we may have data loss in the following case:
- client creates file1 and requests a block from NN and get blk_id1_gs1
- client writes blk_id1_gs1 to DN
- NN is restarted and because persistBlocks is false, blk_id1_gs1 may not be persisted in disk
- another client creates file2 and NN will allocate a new block using the same block id blk_id1_gs1 since block ID and generation stamp are both increased sequentially.
Now we may have two versions (file1 and file2) of the blk_id1_gs1 (same id, same gs) in the system. It will case data loss.