[ 
https://issues.apache.org/jira/browse/HDFS-5924?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Kihwal Lee updated HDFS-5924:
-----------------------------

    Attachment: HDFS-5924_RBW_RECOVERY.patch

The attached patch includes both client and datanode side changes.  The 
new/modified test cases demonstrate the recovery and the fall-back to the 
regular pipeline recovery when restart does not happen in time.

This feature does not guarantee all client writes to continue across restart. 
The OOB ack is advisory and may not get delivered if network is congested or 
client/server is extremely slow. Rather than blocking for delivery, the OOB 
transmission and shutdown times out in order to control the upgrade latency.

Datanode sends an restart OOB ack only when the write originated from a client, 
not another datanode.  The replicas are recorded in individual restart meta 
file along with the time stamp indicating expiry. If datanode restart takes 
longer, the RBW replicas will be loaded normally as RWR for the namenode driven 
block recovery. Otherwise the marked RBW replicas will be loaded as RBW.

Because of the controlled shutdown and restart and the way pipeline recovery 
works, I believe this change has no adverse effect on append recovery. 

> Utilize OOB upgrade message processing for writes
> -------------------------------------------------
>
>                 Key: HDFS-5924
>                 URL: https://issues.apache.org/jira/browse/HDFS-5924
>             Project: Hadoop HDFS
>          Issue Type: Sub-task
>          Components: datanode, ha, hdfs-client, namenode
>            Reporter: Kihwal Lee
>            Assignee: Kihwal Lee
>         Attachments: HDFS-5924_RBW_RECOVERY.patch
>
>
> After HDFS-5585 and HDFS-5583, clients and datanodes can coordinate 
> shutdown-restart in order to minimize failures or locality loss.
> In this jira, HDFS client is made aware of the restart OOB ack and perform 
> special write pipeline recovery. Datanode is also modified to load marked RBW 
> replicas as RBW instead of RWR as long as the restart did not take long. 
> For clients, it considers doing this kind of recovery only when there is only 
> one node left in the pipeline or the restarting node is a local datanode.  
> For both clients and datanodes, the timeout or expiration is configurable, 
> meaning this feature can be turned off by setting timeout variables to 0.



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

Reply via email to