Repository: incubator-slider Updated Branches: refs/heads/develop 8267370dc -> 851f513fa
SLIDER-1183 Slider AM should not kill application if onError is called Project: http://git-wip-us.apache.org/repos/asf/incubator-slider/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-slider/commit/851f513f Tree: http://git-wip-us.apache.org/repos/asf/incubator-slider/tree/851f513f Diff: http://git-wip-us.apache.org/repos/asf/incubator-slider/diff/851f513f Branch: refs/heads/develop Commit: 851f513fa5a001fcbeedde571dd65189cdef34ed Parents: 8267370 Author: Billie Rinaldi <bil...@apache.org> Authored: Fri Feb 3 12:42:37 2017 -0800 Committer: Billie Rinaldi <bil...@apache.org> Committed: Fri Feb 3 12:42:37 2017 -0800 ---------------------------------------------------------------------- .../server/appmaster/SliderAppMaster.java | 21 +++++++++++++++----- .../server/appmaster/actions/ActionHalt.java | 6 ++++++ 2 files changed, 22 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/851f513f/slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java ---------------------------------------------------------------------- diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java index 1337ec5..55431fc 100644 --- a/slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java +++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java @@ -131,6 +131,7 @@ import org.apache.slider.providers.agent.AgentKeys; import org.apache.slider.providers.agent.AgentProviderService; import org.apache.slider.providers.slideram.SliderAMClientProvider; import org.apache.slider.providers.slideram.SliderAMProviderService; +import org.apache.slider.server.appmaster.actions.ActionHalt; import org.apache.slider.server.appmaster.actions.ActionRegisterServiceInstance; import org.apache.slider.server.appmaster.actions.EscalateOutstandingRequests; import org.apache.slider.server.appmaster.actions.RegisterComponentInstance; @@ -2061,11 +2062,21 @@ public class SliderAppMaster extends AbstractSliderLaunchedService @Override //AMRMClientAsync public void onError(Throwable e) { - // callback says it's time to finish - LOG_YARN.error("AMRMClientAsync.onError() received {}", e, e); - signalAMComplete(new ActionStopSlider("stop", EXIT_EXCEPTION_THROWN, - FinalApplicationStatus.FAILED, - SliderUtils.extractFirstLine(e.getLocalizedMessage()))); + if (e instanceof InvalidResourceRequestException) { + // stop the cluster + LOG_YARN.error("AMRMClientAsync.onError() received {}", e, e); + signalAMComplete(new ActionStopSlider("stop", EXIT_EXCEPTION_THROWN, + FinalApplicationStatus.FAILED, + SliderUtils.extractFirstLine(e.getLocalizedMessage()))); + } else if (e instanceof InvalidApplicationMasterRequestException) { + // halt the AM + LOG_YARN.error("AMRMClientAsync.onError() received {}", e, e); + queue(new ActionHalt(EXIT_EXCEPTION_THROWN, + SliderUtils.extractFirstLine(e.getLocalizedMessage()))); + } else { + // ignore and log + LOG_YARN.info("Ignoring AMRMClientAsync.onError() received {}", e); + } } /* =================================================================== */ http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/851f513f/slider-core/src/main/java/org/apache/slider/server/appmaster/actions/ActionHalt.java ---------------------------------------------------------------------- diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/actions/ActionHalt.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/actions/ActionHalt.java index e2ad559..ee1bb72 100644 --- a/slider-core/src/main/java/org/apache/slider/server/appmaster/actions/ActionHalt.java +++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/actions/ActionHalt.java @@ -35,6 +35,12 @@ public class ActionHalt extends AsyncAction { public ActionHalt( int status, + String text) { + this(status, text, 0, TimeUnit.MILLISECONDS); + } + + public ActionHalt( + int status, String text, long delay, TimeUnit timeUnit) {