Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id E075E200BEC for ; Thu, 15 Dec 2016 00:06:45 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id DEFF0160B2E; Wed, 14 Dec 2016 23:06:45 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 08B4F160B19 for ; Thu, 15 Dec 2016 00:06:44 +0100 (CET) Received: (qmail 87927 invoked by uid 500); 14 Dec 2016 23:06:44 -0000 Mailing-List: contact common-commits-help@hadoop.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Delivered-To: mailing list common-commits@hadoop.apache.org Received: (qmail 87918 invoked by uid 99); 14 Dec 2016 23:06:44 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 14 Dec 2016 23:06:44 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id DF7C5E35C8; Wed, 14 Dec 2016 23:06:43 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: xgong@apache.org To: common-commits@hadoop.apache.org Message-Id: <226c8ab3e228462d834aa5d4092164b5@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: hadoop git commit: YARN-5999. AMRMClientAsync will stop if any exceptions thrown on allocate call. Contributed by Jian He Date: Wed, 14 Dec 2016 23:06:43 +0000 (UTC) archived-at: Wed, 14 Dec 2016 23:06:46 -0000 Repository: hadoop Updated Branches: refs/heads/branch-2 85083567b -> 236dbe348 YARN-5999. AMRMClientAsync will stop if any exceptions thrown on allocate call. Contributed by Jian He Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/236dbe34 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/236dbe34 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/236dbe34 Branch: refs/heads/branch-2 Commit: 236dbe3485e2bf58da6f244ea789cae18b5f4e2c Parents: 8508356 Author: Xuan Authored: Wed Dec 14 15:05:42 2016 -0800 Committer: Xuan Committed: Wed Dec 14 15:05:42 2016 -0800 ---------------------------------------------------------------------- .../api/async/impl/AMRMClientAsyncImpl.java | 31 ++++++++------------ .../api/async/impl/TestAMRMClientAsync.java | 2 +- 2 files changed, 14 insertions(+), 19 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/236dbe34/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/api/async/impl/AMRMClientAsyncImpl.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/api/async/impl/AMRMClientAsyncImpl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/api/async/impl/AMRMClientAsyncImpl.java index ae0ab9d..bba6993 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/api/async/impl/AMRMClientAsyncImpl.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/api/async/impl/AMRMClientAsyncImpl.java @@ -60,14 +60,12 @@ extends AMRMClientAsync { private final HeartbeatThread heartbeatThread; private final CallbackHandlerThread handlerThread; - private final BlockingQueue responseQueue; + private final BlockingQueue responseQueue; private final Object unregisterHeartbeatLock = new Object(); private volatile boolean keepRunning; private volatile float progress; - - private volatile Throwable savedException; /** * @@ -87,7 +85,6 @@ extends AMRMClientAsync { handlerThread = new CallbackHandlerThread(); responseQueue = new LinkedBlockingQueue<>(); keepRunning = true; - savedException = null; } /** @@ -108,9 +105,8 @@ extends AMRMClientAsync { super(client, intervalMs, callbackHandler); heartbeatThread = new HeartbeatThread(); handlerThread = new CallbackHandlerThread(); - responseQueue = new LinkedBlockingQueue(); + responseQueue = new LinkedBlockingQueue(); keepRunning = true; - savedException = null; } @Override @@ -262,7 +258,7 @@ extends AMRMClientAsync { public void run() { while (true) { - AllocateResponse response = null; + Object response = null; // synchronization ensures we don't send heartbeats after unregistering synchronized (unregisterHeartbeatLock) { if (!keepRunning) { @@ -277,10 +273,7 @@ extends AMRMClientAsync { return; } catch (Throwable ex) { LOG.error("Exception on heartbeat", ex); - savedException = ex; - // interrupt handler thread in case it waiting on the queue - handlerThread.interrupt(); - return; + response = ex; } if (response != null) { while (true) { @@ -313,18 +306,20 @@ extends AMRMClientAsync { return; } try { - AllocateResponse response; - if(savedException != null) { - LOG.error("Stopping callback due to: ", savedException); - handler.onError(savedException); - return; - } + Object object; try { - response = responseQueue.take(); + object = responseQueue.take(); } catch (InterruptedException ex) { LOG.info("Interrupted while waiting for queue", ex); continue; } + if (object instanceof Throwable) { + progress = handler.getProgress(); + handler.onError((Throwable) object); + continue; + } + + AllocateResponse response = (AllocateResponse) object; List updatedNodes = response.getUpdatedNodes(); if (!updatedNodes.isEmpty()) { handler.onNodesUpdated(updatedNodes); http://git-wip-us.apache.org/repos/asf/hadoop/blob/236dbe34/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/api/async/impl/TestAMRMClientAsync.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/api/async/impl/TestAMRMClientAsync.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/api/async/impl/TestAMRMClientAsync.java index dac82e4..ba38340 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/api/async/impl/TestAMRMClientAsync.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/api/async/impl/TestAMRMClientAsync.java @@ -213,7 +213,7 @@ public class TestAMRMClientAsync { asyncClient.stop(); // stopping should have joined all threads and completed all callbacks - Assert.assertTrue(callbackHandler.callbackCount == 0); + Assert.assertTrue(callbackHandler.callbackCount > 0); } @Test (timeout = 10000) --------------------------------------------------------------------- To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org For additional commands, e-mail: common-commits-help@hadoop.apache.org