HDFS-8592. SafeModeException never get unwrapped. Contributed by Haohui Mai.
This commit is contained in:
parent
b1d3ed02c1
commit
be8e4ed1e1
|
@ -558,6 +558,8 @@ Release 2.8.0 - UNRELEASED
|
||||||
HDFS-8607. TestFileCorruption doesn't work as expected. (Walter Su via
|
HDFS-8607. TestFileCorruption doesn't work as expected. (Walter Su via
|
||||||
Arpit Agarwal)
|
Arpit Agarwal)
|
||||||
|
|
||||||
|
HDFS-8592. SafeModeException never get unwrapped. (wheat9)
|
||||||
|
|
||||||
Release 2.7.1 - UNRELEASED
|
Release 2.7.1 - UNRELEASED
|
||||||
|
|
||||||
INCOMPATIBLE CHANGES
|
INCOMPATIBLE CHANGES
|
||||||
|
|
|
@ -1314,7 +1314,7 @@ public class FSNamesystem implements Namesystem, FSNamesystemMBean,
|
||||||
void checkNameNodeSafeMode(String errorMsg)
|
void checkNameNodeSafeMode(String errorMsg)
|
||||||
throws RetriableException, SafeModeException {
|
throws RetriableException, SafeModeException {
|
||||||
if (isInSafeMode()) {
|
if (isInSafeMode()) {
|
||||||
SafeModeException se = new SafeModeException(errorMsg, safeMode);
|
SafeModeException se = newSafemodeException(errorMsg);
|
||||||
if (haEnabled && haContext != null
|
if (haEnabled && haContext != null
|
||||||
&& haContext.getState().getServiceState() == HAServiceState.ACTIVE
|
&& haContext.getState().getServiceState() == HAServiceState.ACTIVE
|
||||||
&& shouldRetrySafeMode(this.safeMode)) {
|
&& shouldRetrySafeMode(this.safeMode)) {
|
||||||
|
@ -1325,6 +1325,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() {
|
boolean isPermissionEnabled() {
|
||||||
return isPermissionEnabled;
|
return isPermissionEnabled;
|
||||||
}
|
}
|
||||||
|
@ -1793,8 +1798,8 @@ public class FSNamesystem implements Namesystem, FSNamesystemMBean,
|
||||||
for (LocatedBlock b : ret.blocks.getLocatedBlocks()) {
|
for (LocatedBlock b : ret.blocks.getLocatedBlocks()) {
|
||||||
// if safemode & no block locations yet then throw safemodeException
|
// if safemode & no block locations yet then throw safemodeException
|
||||||
if ((b.getLocations() == null) || (b.getLocations().length == 0)) {
|
if ((b.getLocations() == null) || (b.getLocations().length == 0)) {
|
||||||
SafeModeException se = new SafeModeException(
|
SafeModeException se = newSafemodeException(
|
||||||
"Zero blocklocations for " + src, safeMode);
|
"Zero blocklocations for " + src);
|
||||||
if (haEnabled && haContext != null &&
|
if (haEnabled && haContext != null &&
|
||||||
haContext.getState().getServiceState() == HAServiceState.ACTIVE) {
|
haContext.getState().getServiceState() == HAServiceState.ACTIVE) {
|
||||||
throw new RetriableException(se);
|
throw new RetriableException(se);
|
||||||
|
|
|
@ -32,8 +32,7 @@ import org.apache.hadoop.classification.InterfaceStability;
|
||||||
@InterfaceStability.Evolving
|
@InterfaceStability.Evolving
|
||||||
public class SafeModeException extends IOException {
|
public class SafeModeException extends IOException {
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
public SafeModeException(String msg) {
|
||||||
public SafeModeException(String text, FSNamesystem.SafeModeInfo mode ) {
|
super(msg);
|
||||||
super(text + ". Name node is in safe mode.\n" + mode.getTurnOffTip());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -295,8 +295,8 @@ public class TestSafeMode {
|
||||||
fail(msg);
|
fail(msg);
|
||||||
} catch (RemoteException re) {
|
} catch (RemoteException re) {
|
||||||
assertEquals(SafeModeException.class.getName(), re.getClassName());
|
assertEquals(SafeModeException.class.getName(), re.getClassName());
|
||||||
GenericTestUtils.assertExceptionContains(
|
GenericTestUtils.assertExceptionContains("Name node is in safe mode", re);
|
||||||
"Name node is in safe mode", re);
|
} catch (SafeModeException ignored) {
|
||||||
} catch (IOException ioe) {
|
} catch (IOException ioe) {
|
||||||
fail(msg + " " + StringUtils.stringifyException(ioe));
|
fail(msg + " " + StringUtils.stringifyException(ioe));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue