YARN-6368. Decommissioning an NM results in a -1 exit code (miklos.szegedi@cloudera.com via rkanter)

(cherry picked from commit 63f7322522)
This commit is contained in:
Robert Kanter 2017-04-07 14:28:07 -07:00
parent c85026038a
commit cbb1c76195
2 changed files with 23 additions and 5 deletions

View File

@ -80,6 +80,24 @@ import com.google.common.annotations.VisibleForTesting;
public class NodeManager extends CompositeService public class NodeManager extends CompositeService
implements EventHandler<NodeManagerEvent> { implements EventHandler<NodeManagerEvent> {
/**
* Node manager return status codes.
*/
public enum NodeManagerStatus {
NO_ERROR(0),
EXCEPTION(1);
private int exitCode;
NodeManagerStatus(int exitCode) {
this.exitCode = exitCode;
}
public int getExitCode() {
return exitCode;
}
}
/** /**
* Priority of the NodeManager shutdown hook. * Priority of the NodeManager shutdown hook.
*/ */
@ -408,7 +426,7 @@ public class NodeManager extends CompositeService
return "NodeManager"; return "NodeManager";
} }
protected void shutDown() { protected void shutDown(final int exitCode) {
new Thread() { new Thread() {
@Override @Override
public void run() { public void run() {
@ -419,7 +437,7 @@ public class NodeManager extends CompositeService
} finally { } finally {
if (shouldExitOnShutdownEvent if (shouldExitOnShutdownEvent
&& !ShutdownHookManager.get().isShutdownInProgress()) { && !ShutdownHookManager.get().isShutdownInProgress()) {
ExitUtil.terminate(-1); ExitUtil.terminate(exitCode);
} }
} }
} }
@ -444,7 +462,7 @@ public class NodeManager extends CompositeService
.rebootNodeStatusUpdaterAndRegisterWithRM(); .rebootNodeStatusUpdaterAndRegisterWithRM();
} catch (YarnRuntimeException e) { } catch (YarnRuntimeException e) {
LOG.fatal("Error while rebooting NodeStatusUpdater.", e); LOG.fatal("Error while rebooting NodeStatusUpdater.", e);
shutDown(); shutDown(NodeManagerStatus.EXCEPTION.getExitCode());
} }
} }
}.start(); }.start();
@ -700,7 +718,7 @@ public class NodeManager extends CompositeService
public void handle(NodeManagerEvent event) { public void handle(NodeManagerEvent event) {
switch (event.getType()) { switch (event.getType()) {
case SHUTDOWN: case SHUTDOWN:
shutDown(); shutDown(NodeManagerStatus.NO_ERROR.getExitCode());
break; break;
case RESYNC: case RESYNC:
resyncWithRM(); resyncWithRM();

View File

@ -638,7 +638,7 @@ public class TestNodeManagerResync {
} }
@Override @Override
protected void shutDown() { protected void shutDown(int exitCode) {
synchronized (isNMShutdownCalled) { synchronized (isNMShutdownCalled) {
isNMShutdownCalled.set(true); isNMShutdownCalled.set(true);
isNMShutdownCalled.notify(); isNMShutdownCalled.notify();