[ 
https://issues.apache.org/jira/browse/HDFS-6038?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13921602#comment-13921602
 ] 

Jing Zhao commented on HDFS-6038:
---------------------------------

After offline discussion with [~szetszwo], the 002 patch did the following 
change:
1. Persist a length field for each editlog op to indicate the total length of 
the op
2. In JournalNode, instead of calling EditLogFileInputStream#validateEditLog to 
get the last txid of an in-progress editlog segment, we add a new method 
scanEditLog which does not decode each editlog op. Instead, the new method 
reads the length and txid of each op, and use the length to quickly jump to the 
next op.

The 002 patch is just a preliminary patch to demonstrate the idea. Still need 
to fix unit tests and run system tests.

> JournalNode hardcodes NameNodeLayoutVersion in the edit log file
> ----------------------------------------------------------------
>
>                 Key: HDFS-6038
>                 URL: https://issues.apache.org/jira/browse/HDFS-6038
>             Project: Hadoop HDFS
>          Issue Type: Sub-task
>          Components: datanode, ha, hdfs-client, namenode
>            Reporter: Haohui Mai
>            Assignee: Jing Zhao
>         Attachments: HDFS-6038.000.patch, HDFS-6038.001.patch, 
> HDFS-6038.002.patch
>
>
> In HA setup, the JNs receive edit logs (blob) from the NN and write into edit 
> log files. In order to write well-formed edit log files, the JNs prepend a 
> header for each edit log file.
> The problem is that the JN hard-codes the version (i.e., 
> {{NameNodeLayoutVersion}} in the edit log, therefore it generates incorrect 
> edit logs when the newer release bumps the {{NameNodeLayoutVersion}} during 
> rolling upgrade.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to