Return-Path: X-Original-To: apmail-hadoop-hdfs-commits-archive@minotaur.apache.org Delivered-To: apmail-hadoop-hdfs-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 7EE55D663 for ; Tue, 14 Aug 2012 14:00:05 +0000 (UTC) Received: (qmail 32037 invoked by uid 500); 14 Aug 2012 14:00:05 -0000 Delivered-To: apmail-hadoop-hdfs-commits-archive@hadoop.apache.org Received: (qmail 31974 invoked by uid 500); 14 Aug 2012 14:00:04 -0000 Mailing-List: contact hdfs-commits-help@hadoop.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: hdfs-dev@hadoop.apache.org Delivered-To: mailing list hdfs-commits@hadoop.apache.org Received: (qmail 31963 invoked by uid 99); 14 Aug 2012 14:00:04 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 14 Aug 2012 14:00:04 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 14 Aug 2012 14:00:01 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 572B923888EA; Tue, 14 Aug 2012 13:59:17 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1372886 - in /hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs: ./ src/main/java/org/apache/hadoop/hdfs/server/namenode/ src/test/java/org/apache/hadoop/hdfs/server/namenode/ Date: Tue, 14 Aug 2012 13:59:17 -0000 To: hdfs-commits@hadoop.apache.org From: daryn@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20120814135917.572B923888EA@eris.apache.org> Author: daryn Date: Tue Aug 14 13:59:16 2012 New Revision: 1372886 URL: http://svn.apache.org/viewvc?rev=1372886&view=rev Log: svn merge -c 1363899 FIXES: HDFS-3597. SNN fails to start after DFS upgrade. Contributed by Andy Isaacson. Added: hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestSecondaryNameNodeUpgrade.java - copied unchanged from r1363899, hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestSecondaryNameNodeUpgrade.java Modified: hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/CheckpointSignature.java hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/SecondaryNameNode.java Modified: hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt?rev=1372886&r1=1372885&r2=1372886&view=diff ============================================================================== --- hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt (original) +++ hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt Tue Aug 14 13:59:16 2012 @@ -90,6 +90,8 @@ Release 0.23.3 - UNRELEASED HDFS-3187. Upgrade guava to 11.0.2 (todd) + HDFS-3597. SNN fails to start after DFS upgrade. (Andy Isaacson via todd) + Release 0.23.2 - UNRELEASED INCOMPATIBLE CHANGES Modified: hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/CheckpointSignature.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/CheckpointSignature.java?rev=1372886&r1=1372885&r2=1372886&view=diff ============================================================================== --- hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/CheckpointSignature.java (original) +++ hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/CheckpointSignature.java Tue Aug 14 13:59:16 2012 @@ -102,12 +102,19 @@ public class CheckpointSignature extends + blockpoolID ; } + boolean storageVersionMatches(StorageInfo si) throws IOException { + return (layoutVersion == si.layoutVersion) && (cTime == si.cTime); + } + + boolean isSameCluster(FSImage si) { + return namespaceID == si.getStorage().namespaceID && + clusterID.equals(si.getClusterID()) && + blockpoolID.equals(si.getBlockPoolID()); + } + void validateStorageInfo(FSImage si) throws IOException { - if(layoutVersion != si.getStorage().layoutVersion - || namespaceID != si.getStorage().namespaceID - || cTime != si.getStorage().cTime - || !clusterID.equals(si.getClusterID()) - || !blockpoolID.equals(si.getBlockPoolID())) { + if (!isSameCluster(si) + || !storageVersionMatches(si.getStorage())) { throw new IOException("Inconsistent checkpoint fields.\n" + "LV = " + layoutVersion + " namespaceID = " + namespaceID + " cTime = " + cTime Modified: hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/SecondaryNameNode.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/SecondaryNameNode.java?rev=1372886&r1=1372885&r2=1372886&view=diff ============================================================================== --- hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/SecondaryNameNode.java (original) +++ hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/SecondaryNameNode.java Tue Aug 14 13:59:16 2012 @@ -503,18 +503,16 @@ public class SecondaryNameNode implement // Returns a token that would be used to upload the merged image. CheckpointSignature sig = namenode.rollEditLog(); - // Make sure we're talking to the same NN! - if (checkpointImage.getNamespaceID() != 0) { - // If the image actually has some data, make sure we're talking - // to the same NN as we did before. - sig.validateStorageInfo(checkpointImage); - } else { - // if we're a fresh 2NN, just take the storage info from the server - // we first talk to. + if ((checkpointImage.getNamespaceID() == 0) || + (sig.isSameCluster(checkpointImage) && + !sig.storageVersionMatches(checkpointImage.getStorage()))) { + // if we're a fresh 2NN, or if we're on the same cluster and our storage + // needs an upgrade, just take the storage info from the server. dstStorage.setStorageInfo(sig); dstStorage.setClusterID(sig.getClusterID()); dstStorage.setBlockPoolID(sig.getBlockpoolID()); } + sig.validateStorageInfo(checkpointImage); // error simulation code for junit test if (ErrorSimulator.getErrorSimulation(0)) { @@ -769,7 +767,7 @@ public class SecondaryNameNode implement /** * Analyze checkpoint directories. * Create directories if they do not exist. - * Recover from an unsuccessful checkpoint is necessary. + * Recover from an unsuccessful checkpoint if necessary. * * @throws IOException */