[
https://issues.apache.org/jira/browse/HDFS-4462?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13570526#comment-13570526
]
Todd Lipcon commented on HDFS-4462:
-----------------------------------
The patch looks correct, but my brain was too small to comprehend the new 'if'
statement. Does the following diff vs your patch look right to you?
{code}
- if ((checkpointImage.getNamespaceID() == 0) ||
- (((dstStorage.versionSupportsFederation() &&
- sig.isSameCluster(checkpointImage)) ||
- (!dstStorage.versionSupportsFederation() &&
- sig.namespaceIdMatches(checkpointImage))) &&
- !sig.storageVersionMatches(checkpointImage.getStorage()))) {
+ boolean isFreshCheckpointer = (checkpointImage.getNamespaceID() == 0);
+ boolean sameCluster =
+ (dstStorage.versionSupportsFederation() &&
sig.isSameCluster(checkpointImage)) ||
+ (!dstStorage.versionSupportsFederation() &&
sig.namespaceIdMatches(checkpointImage));
+
+ if (isFreshCheckpointer ||
+ (sameCluster &&
!sig.storageVersionMatches(checkpointImage.getStorage()))) {
{code}
I think it makes the code a lot easier to understand. If my change looks right,
+1 with it incorporated into your patch.
> 2NN will fail to checkpoint after an HDFS upgrade from a pre-federation
> version of HDFS
> ---------------------------------------------------------------------------------------
>
> Key: HDFS-4462
> URL: https://issues.apache.org/jira/browse/HDFS-4462
> Project: Hadoop HDFS
> Issue Type: Bug
> Components: namenode
> Affects Versions: 2.0.2-alpha
> Reporter: Aaron T. Myers
> Assignee: Aaron T. Myers
> Attachments: HDFS-4462.patch, HDFS-4462.patch, HDFS-4462.patch,
> HDFS-4462.patch
>
>
> The 2NN currently has logic to detect when its on-disk FS metadata needs an
> upgrade with respect to the NN's metadata (i.e. the layout versions are
> different) and in this case it will proceed with the checkpoint despite
> storage signatures not matching precisely if the BP ID and Cluster ID do
> match exactly. However, in situations where we're upgrading from versions of
> HDFS prior to federation, which had no BP IDs or Cluster IDs, checkpoints
> will always fail with an error like the following:
> {noformat}
> 13/01/31 17:02:25 ERROR namenode.SecondaryNameNode: checkpoint: Inconsistent
> checkpoint fields.
> LV = -40 namespaceID = 403832480 cTime = 1359680537192 ; clusterId =
> CID-0df6ff22-1165-4c7d-9630-429972a7737c ; blockpoolId =
> BP-1520616013-172.21.3.106-1359680537136.
> Expecting respectively: -19; 403832480; 0; ; .
> {noformat}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira