[
https://issues.apache.org/jira/browse/HDFS-5590?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Jing Zhao updated HDFS-5590:
----------------------------
Description:
In a cluster with non-HA setup and dfs.persist.blocks set to false, the current
sequential block ID mechanism may cause 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 is not
persisted in editlog
# 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.
was:
In a cluster with non-HA setup and dfs.persist.blocks set to false, the current
sequential block ID may cause 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 is not
persisted in editlog
# 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.
> Sequential block ID may cause data loss when persistBlocks is set to false
> --------------------------------------------------------------------------
>
> Key: HDFS-5590
> URL: https://issues.apache.org/jira/browse/HDFS-5590
> Project: Hadoop HDFS
> Issue Type: Bug
> Affects Versions: 2.2.0
> Reporter: Jing Zhao
> Assignee: Jing Zhao
>
> In a cluster with non-HA setup and dfs.persist.blocks set to false, the
> current sequential block ID mechanism may cause 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 is not
> persisted in editlog
> # 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.
--
This message was sent by Atlassian JIRA
(v6.1#6144)