[ 
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

Reply via email to