HDFS-8592. SafeModeException never get unwrapped. Contributed by Haohui Mai.
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/388f1ff9 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/388f1ff9 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/388f1ff9 Branch: refs/heads/YARN-2928 Commit: 388f1ff9b79e3e15fd2f29c817c29fc78517e72a Parents: 5032eb9 Author: Haohui Mai <whe...@apache.org> Authored: Mon Jun 15 22:07:24 2015 -0700 Committer: Zhijie Shen <zjs...@apache.org> Committed: Thu Jun 18 11:10:07 2015 -0700 ---------------------------------------------------------------------- hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt | 2 ++ .../apache/hadoop/hdfs/server/namenode/FSNamesystem.java | 11 ++++++++--- .../hadoop/hdfs/server/namenode/SafeModeException.java | 5 ++--- .../test/java/org/apache/hadoop/hdfs/TestSafeMode.java | 4 ++-- 4 files changed, 14 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/388f1ff9/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 79e7820..0ae2882 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt +++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt @@ -895,6 +895,8 @@ Release 2.8.0 - UNRELEASED HDFS-8607. TestFileCorruption doesn't work as expected. (Walter Su via Arpit Agarwal) + HDFS-8592. SafeModeException never get unwrapped. (wheat9) + Release 2.7.1 - UNRELEASED INCOMPATIBLE CHANGES http://git-wip-us.apache.org/repos/asf/hadoop/blob/388f1ff9/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 518adb4..40c71ea 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 @@ -1323,7 +1323,7 @@ public class FSNamesystem implements Namesystem, FSNamesystemMBean, void checkNameNodeSafeMode(String errorMsg) throws RetriableException, SafeModeException { if (isInSafeMode()) { - SafeModeException se = new SafeModeException(errorMsg, safeMode); + SafeModeException se = newSafemodeException(errorMsg); if (haEnabled && haContext != null && haContext.getState().getServiceState() == HAServiceState.ACTIVE && shouldRetrySafeMode(this.safeMode)) { @@ -1334,6 +1334,11 @@ public class FSNamesystem implements Namesystem, FSNamesystemMBean, } } + private SafeModeException newSafemodeException(String errorMsg) { + return new SafeModeException(errorMsg + ". Name node is in safe " + + "mode.\n" + safeMode.getTurnOffTip()); + } + boolean isPermissionEnabled() { return isPermissionEnabled; } @@ -1803,8 +1808,8 @@ public class FSNamesystem implements Namesystem, FSNamesystemMBean, for (LocatedBlock b : ret.blocks.getLocatedBlocks()) { // if safemode & no block locations yet then throw safemodeException if ((b.getLocations() == null) || (b.getLocations().length == 0)) { - SafeModeException se = new SafeModeException( - "Zero blocklocations for " + src, safeMode); + SafeModeException se = newSafemodeException( + "Zero blocklocations for " + src); if (haEnabled && haContext != null && haContext.getState().getServiceState() == HAServiceState.ACTIVE) { throw new RetriableException(se); http://git-wip-us.apache.org/repos/asf/hadoop/blob/388f1ff9/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/SafeModeException.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/SafeModeException.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/SafeModeException.java index 458f052..8080bcf 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/SafeModeException.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/SafeModeException.java @@ -32,8 +32,7 @@ import org.apache.hadoop.classification.InterfaceStability; @InterfaceStability.Evolving public class SafeModeException extends IOException { private static final long serialVersionUID = 1L; - - public SafeModeException(String text, FSNamesystem.SafeModeInfo mode ) { - super(text + ". Name node is in safe mode.\n" + mode.getTurnOffTip()); + public SafeModeException(String msg) { + super(msg); } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/hadoop/blob/388f1ff9/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestSafeMode.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestSafeMode.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestSafeMode.java index 80fe9ee..6cea7e8 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestSafeMode.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestSafeMode.java @@ -295,8 +295,8 @@ public class TestSafeMode { fail(msg); } catch (RemoteException re) { assertEquals(SafeModeException.class.getName(), re.getClassName()); - GenericTestUtils.assertExceptionContains( - "Name node is in safe mode", re); + GenericTestUtils.assertExceptionContains("Name node is in safe mode", re); + } catch (SafeModeException ignored) { } catch (IOException ioe) { fail(msg + " " + StringUtils.stringifyException(ioe)); }