[ 
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)

Reply via email to