You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by zj...@apache.org on 2015/06/18 20:24:49 UTC
[11/50] [abbrv] hadoop git commit: HDFS-8593. Calculation of
effective layout version mishandles comparison to current layout version in
storage. Contributed by Chris Nauroth.
HDFS-8593. Calculation of effective layout version mishandles comparison to current layout version in storage. Contributed by Chris Nauroth.
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/fb7f8ec1
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/fb7f8ec1
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/fb7f8ec1
Branch: refs/heads/YARN-2928
Commit: fb7f8ec15eab00fe1548d6d6cd758124fc0ea83c
Parents: d6ff0e8
Author: cnauroth <cn...@apache.org>
Authored: Sat Jun 13 10:37:52 2015 -0700
Committer: Zhijie Shen <zj...@apache.org>
Committed: Thu Jun 18 11:10:05 2015 -0700
----------------------------------------------------------------------
hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt | 3 +++
.../hdfs/server/namenode/FSNamesystem.java | 17 ++++++++++++-----
.../hdfs/server/namenode/TestFSNamesystem.java | 20 ++++++++++++++++++++
3 files changed, 35 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/fb7f8ec1/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
index 51a0897..9aabd34 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
+++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
@@ -886,6 +886,9 @@ Release 2.8.0 - UNRELEASED
HDFS-8554. TestDatanodeLayoutUpgrade fails on Windows. (cnauroth)
+ HDFS-8593. Calculation of effective layout version mishandles comparison to
+ current layout version in storage. (cnauroth)
+
Release 2.7.1 - UNRELEASED
INCOMPATIBLE CHANGES
http://git-wip-us.apache.org/repos/asf/hadoop/blob/fb7f8ec1/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java
index ef53692..f962373 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java
@@ -7004,10 +7004,17 @@ public class FSNamesystem implements Namesystem, FSNamesystemMBean,
* @return layout version in effect
*/
public int getEffectiveLayoutVersion() {
- if (isRollingUpgrade()) {
- int storageLV = fsImage.getStorage().getLayoutVersion();
- if (storageLV >=
- NameNodeLayoutVersion.MINIMUM_COMPATIBLE_LAYOUT_VERSION) {
+ return getEffectiveLayoutVersion(isRollingUpgrade(),
+ fsImage.getStorage().getLayoutVersion(),
+ NameNodeLayoutVersion.MINIMUM_COMPATIBLE_LAYOUT_VERSION,
+ NameNodeLayoutVersion.CURRENT_LAYOUT_VERSION);
+ }
+
+ @VisibleForTesting
+ static int getEffectiveLayoutVersion(boolean isRollingUpgrade, int storageLV,
+ int minCompatLV, int currentLV) {
+ if (isRollingUpgrade) {
+ if (storageLV <= minCompatLV) {
// The prior layout version satisfies the minimum compatible layout
// version of the current software. Keep reporting the prior layout
// as the effective one. Downgrade is possible.
@@ -7016,7 +7023,7 @@ public class FSNamesystem implements Namesystem, FSNamesystemMBean,
}
// The current software cannot satisfy the layout version of the prior
// software. Proceed with using the current layout version.
- return NameNodeLayoutVersion.CURRENT_LAYOUT_VERSION;
+ return currentLV;
}
/**
http://git-wip-us.apache.org/repos/asf/hadoop/blob/fb7f8ec1/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestFSNamesystem.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestFSNamesystem.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestFSNamesystem.java
index 8b0662c..26bb4f7 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestFSNamesystem.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestFSNamesystem.java
@@ -213,4 +213,24 @@ public class TestFSNamesystem {
fsn.imageLoadComplete();
assertTrue(fsn.isImageLoaded());
}
+
+ @Test
+ public void testGetEffectiveLayoutVersion() {
+ assertEquals(-63,
+ FSNamesystem.getEffectiveLayoutVersion(true, -60, -61, -63));
+ assertEquals(-61,
+ FSNamesystem.getEffectiveLayoutVersion(true, -61, -61, -63));
+ assertEquals(-62,
+ FSNamesystem.getEffectiveLayoutVersion(true, -62, -61, -63));
+ assertEquals(-63,
+ FSNamesystem.getEffectiveLayoutVersion(true, -63, -61, -63));
+ assertEquals(-63,
+ FSNamesystem.getEffectiveLayoutVersion(false, -60, -61, -63));
+ assertEquals(-63,
+ FSNamesystem.getEffectiveLayoutVersion(false, -61, -61, -63));
+ assertEquals(-63,
+ FSNamesystem.getEffectiveLayoutVersion(false, -62, -61, -63));
+ assertEquals(-63,
+ FSNamesystem.getEffectiveLayoutVersion(false, -63, -61, -63));
+ }
}