TEZ-2204. TestAMRecovery increasingly flaky on jenkins builds. (zjffdu)
Project: http://git-wip-us.apache.org/repos/asf/tez/repo Commit: http://git-wip-us.apache.org/repos/asf/tez/commit/f53942ce Tree: http://git-wip-us.apache.org/repos/asf/tez/tree/f53942ce Diff: http://git-wip-us.apache.org/repos/asf/tez/diff/f53942ce Branch: refs/heads/TEZ-2003 Commit: f53942ceaa74f4c3b272c4ac0ffb14db46ce8127 Parents: 6d0b10a Author: Jeff Zhang <[email protected]> Authored: Tue Mar 24 16:48:09 2015 +0800 Committer: Jeff Zhang <[email protected]> Committed: Tue Mar 24 16:48:09 2015 +0800 ---------------------------------------------------------------------- CHANGES.txt | 1 + tez-common/findbugs-exclude.xml | 5 +++-- .../java/org/apache/tez/common/AsyncDispatcher.java | 15 +++++++++++++-- .../java/org/apache/tez/dag/app/DAGAppMaster.java | 7 +++++++ 4 files changed, 24 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tez/blob/f53942ce/CHANGES.txt ---------------------------------------------------------------------- diff --git a/CHANGES.txt b/CHANGES.txt index f8677b1..4cbb567 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -8,6 +8,7 @@ INCOMPATIBLE CHANGES TEZ-2176. Move all logging to slf4j. (commons-logging jar no longer part of Tez tar) ALL CHANGES: + TEZ-2204. TestAMRecovery increasingly flaky on jenkins builds. TEZ-2209. Fix pipelined shuffle to fetch data from any one attempt TEZ-2210. Record DAG AM CPU usage stats TEZ-2203. Intern strings in tez counters http://git-wip-us.apache.org/repos/asf/tez/blob/f53942ce/tez-common/findbugs-exclude.xml ---------------------------------------------------------------------- diff --git a/tez-common/findbugs-exclude.xml b/tez-common/findbugs-exclude.xml index 2950e65..7814585 100644 --- a/tez-common/findbugs-exclude.xml +++ b/tez-common/findbugs-exclude.xml @@ -13,9 +13,10 @@ --> <FindBugsFilter> + <!-- TEZ-2204 --> <Match> - <Class name="org.apache.tez.common.AsyncDispatcher"/> - <Method name="dispatch"/> + <Class name="org.apache.tez.common.AsyncDispatcher$2"/> + <Method name="run" /> <Bug pattern="DM_EXIT"/> </Match> http://git-wip-us.apache.org/repos/asf/tez/blob/f53942ce/tez-common/src/main/java/org/apache/tez/common/AsyncDispatcher.java ---------------------------------------------------------------------- diff --git a/tez-common/src/main/java/org/apache/tez/common/AsyncDispatcher.java b/tez-common/src/main/java/org/apache/tez/common/AsyncDispatcher.java index 173b4c7..b751260 100644 --- a/tez-common/src/main/java/org/apache/tez/common/AsyncDispatcher.java +++ b/tez-common/src/main/java/org/apache/tez/common/AsyncDispatcher.java @@ -189,8 +189,9 @@ public class AsyncDispatcher extends CompositeService implements Dispatcher { if (exitOnDispatchException && (ShutdownHookManager.get().isShutdownInProgress()) == false && stopped == false) { - LOG.info("Exiting, bbye.."); - System.exit(-1); + Thread shutDownThread = new Thread(createShutDownThread()); + shutDownThread.setName("AsyncDispatcher ShutDown handler"); + shutDownThread.start(); } } } @@ -315,4 +316,14 @@ public class AsyncDispatcher extends CompositeService implements Dispatcher { } } + + Runnable createShutDownThread() { + return new Runnable() { + @Override + public void run() { + LOG.info("Exiting, bbye.."); + System.exit(-1); + } + }; + } } http://git-wip-us.apache.org/repos/asf/tez/blob/f53942ce/tez-dag/src/main/java/org/apache/tez/dag/app/DAGAppMaster.java ---------------------------------------------------------------------- diff --git a/tez-dag/src/main/java/org/apache/tez/dag/app/DAGAppMaster.java b/tez-dag/src/main/java/org/apache/tez/dag/app/DAGAppMaster.java index e0351b0..2924b25 100644 --- a/tez-dag/src/main/java/org/apache/tez/dag/app/DAGAppMaster.java +++ b/tez-dag/src/main/java/org/apache/tez/dag/app/DAGAppMaster.java @@ -716,6 +716,13 @@ public class DAGAppMaster extends AbstractService { EventHandler<DAGAppMasterEvent> { @Override public void handle(DAGAppMasterEvent event) { + // don't handle events if DAGAppMaster is in the state of STOPPED, + // otherwise there may be dead-lock happen. TEZ-2204 + if (DAGAppMaster.this.getServiceState() == STATE.STOPPED) { + LOG.info("ignore event when DAGAppMaster is in the state of STOPPED, eventType=" + + event.getType()); + return; + } DAGAppMaster.this.handle(event); } }
