You are viewing a plain text version of this content. The canonical link for it is here.
Posted to hdfs-commits@hadoop.apache.org by da...@apache.org on 2012/08/14 15:59:17 UTC
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/
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
*/