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

View File

@ -750,7 +750,7 @@ public class NodeManager extends CompositeService
// Failed to start if we're a Unix based system but we don't have bash. // 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. // Bash is necessary to launch containers under Unix-based systems.
if (!Shell.WINDOWS) { if (!Shell.WINDOWS) {
if (!Shell.isBashSupported) { if (!Shell.checkIsBashSupported()) {
String message = String message =
"Failing NodeManager start since we're on a " "Failing NodeManager start since we're on a "
+ "Unix-based system but bash doesn't seem to be available."; + "Unix-based system but bash doesn't seem to be available.";