[
https://issues.apache.org/jira/browse/HDFS-9788?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15141787#comment-15141787
]
Andrew Wang commented on HDFS-9788:
-----------------------------------
Thanks Uma. I think the rule is: never change the PB tag number when
backporting. Tag numbers don't need to be monotonic, so we could have done
{{rollingUpgradeStatusV2 = 5;}} in the branch-2.7 backport even though
{{fullBlockReportLeaseId = 4;}} isn't present.
This is a good reminder to check the PBs very carefully for each release. I
wonder if there is a way to automate this check? I see YARN-3330 which has a
python script, but looks like it's not reviewed yet.
> Incompatible tag renumbering in HeartbeatResponseProto
> ------------------------------------------------------
>
> Key: HDFS-9788
> URL: https://issues.apache.org/jira/browse/HDFS-9788
> Project: Hadoop HDFS
> Issue Type: Bug
> Components: rolling upgrades
> Affects Versions: 2.8.0
> Reporter: Andrew Wang
> Assignee: Andrew Wang
> Priority: Blocker
> Attachments: HDFS-9788.001.patch
>
>
> The HDFS-9426 patches for branch-2.7 and branch-2 used different tag numbers
> for {{rollingUpgradeStatusV2}} in HeartbeatResponseProto:
> trunk/branch-2:
> {code}
> message HeartbeatResponseProto {
> repeated DatanodeCommandProto cmds = 1; // Returned commands can be null
> required NNHAStatusHeartbeatProto haStatus = 2;
> optional RollingUpgradeStatusProto rollingUpgradeStatus = 3;
> optional uint64 fullBlockReportLeaseId = 4 [ default = 0 ];
> optional RollingUpgradeStatusProto rollingUpgradeStatusV2 = 5;
> }
> {code}
> branch-2.7:
> {code}
> message HeartbeatResponseProto {
> repeated DatanodeCommandProto cmds = 1; // Returned commands can be null
> required NNHAStatusHeartbeatProto haStatus = 2;
> optional RollingUpgradeStatusProto rollingUpgradeStatus = 3;
> optional RollingUpgradeStatusProto rollingUpgradeStatusV2 = 4;
> }
> {code}
> This breaks rolling upgrade between 2.7 and a future 2.8. We need to renumber
> the tags to preserve wire compatibility.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)