HADOOP-13770. Shell.checkIsBashSupported swallowed an interrupted exception. Contributed by Wei-Chiu Chuang

This commit is contained in:
Jason Lowe 2016-10-28 14:57:50 +00:00
parent 3de130252d
commit c017171da0
2 changed files with 5 additions and 3 deletions

View File

@ -734,8 +734,7 @@ public static File getWinUtilsFile() throws FileNotFoundException {
}
}
public static final boolean isBashSupported = checkIsBashSupported();
private static boolean checkIsBashSupported() {
public static boolean checkIsBashSupported() throws InterruptedIOException {
if (Shell.WINDOWS) {
return false;
}
@ -746,6 +745,9 @@ private static boolean checkIsBashSupported() {
String[] args = {"bash", "-c", "echo 1000"};
shexec = new ShellCommandExecutor(args);
shexec.execute();
} catch (InterruptedIOException iioe) {
LOG.warn("Interrupted, unable to determine if bash is supported", iioe);
throw iioe;
} catch (IOException ioe) {
LOG.warn("Bash is not supported by the OS", ioe);
supported = false;

View File

@ -750,7 +750,7 @@ private void initAndStartNodeManager(Configuration conf, boolean hasToReboot) {
// Failed to start if we're a Unix based system but we don't have bash.
// Bash is necessary to launch containers under Unix-based systems.
if (!Shell.WINDOWS) {
if (!Shell.isBashSupported) {
if (!Shell.checkIsBashSupported()) {
String message =
"Failing NodeManager start since we're on a "
+ "Unix-based system but bash doesn't seem to be available.";