[
https://issues.apache.org/jira/browse/HDFS-12120?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16082172#comment-16082172
]
Vinayakumar B commented on HDFS-12120:
--------------------------------------
Idea is :
1. On RU-prepare command, NameNode can track the pre-RU blockId and genstamp.
2. For all append requests, where last block is pre-RU, force the client to
write to new block (as variable length block feature is already available).
--> Here, instead of making last block to UNDERCONSTRUCTION, regardless of
client's flag of NEW_BLOCK, return null for last block and exclude from
validation of previousBlock in addBlock() call for this specific case.
So in this way, pre-RU block will be same in state and length.
Hi [~kihwal], whether this sounds okay to you ?
> Use new block for pre-RollingUpgrade files` append requests
> -----------------------------------------------------------
>
> Key: HDFS-12120
> URL: https://issues.apache.org/jira/browse/HDFS-12120
> Project: Hadoop HDFS
> Issue Type: Bug
> Reporter: Vinayakumar B
>
> After the RollingUpgrade prepare, append on pre-RU files will re-open the
> same last block and makes changes to it (appending extra data, changing
> genstamp etc).
> These changes to the block will not be tracked in Datanodes (either in trash
> or via hardlinks)
> This creates problem if RollingUpgrade.Rollback is called.
> Since block state and size both changed, after rollback block will be marked
> corrupted.
> To avoid this, first time append on pre-RU files can be forced to write to
> new block itself.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]