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 8226F200CF0 for ; Tue, 22 Aug 2017 06:39:51 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id 8084616603F; Tue, 22 Aug 2017 04:39:51 +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 A1274166024 for ; Tue, 22 Aug 2017 06:39:50 +0200 (CEST) Received: (qmail 84261 invoked by uid 500); 22 Aug 2017 04:39:49 -0000 Mailing-List: contact commits-help@asterixdb.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@asterixdb.apache.org Delivered-To: mailing list commits@asterixdb.apache.org Received: (qmail 84252 invoked by uid 99); 22 Aug 2017 04:39:49 -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; Tue, 22 Aug 2017 04:39:49 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 79BD2E0019; Tue, 22 Aug 2017 04:39:49 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: mblow@apache.org To: commits@asterixdb.apache.org Message-Id: <965f06b61a384b5cafe58e2e3c373b98@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: asterixdb git commit: [ASTERIXDB-2055][HYR][CLUS] Avoid double shutdown Date: Tue, 22 Aug 2017 04:39:49 +0000 (UTC) archived-at: Tue, 22 Aug 2017 04:39:51 -0000 Repository: asterixdb Updated Branches: refs/heads/master 7def53f4e -> de892d7c0 [ASTERIXDB-2055][HYR][CLUS] Avoid double shutdown Change-Id: If50651a4c46178f191966e09d365d2015df295bc Reviewed-on: https://asterix-gerrit.ics.uci.edu/1957 Reviewed-by: Michael Blow Tested-by: Michael Blow Project: http://git-wip-us.apache.org/repos/asf/asterixdb/repo Commit: http://git-wip-us.apache.org/repos/asf/asterixdb/commit/de892d7c Tree: http://git-wip-us.apache.org/repos/asf/asterixdb/tree/de892d7c Diff: http://git-wip-us.apache.org/repos/asf/asterixdb/diff/de892d7c Branch: refs/heads/master Commit: de892d7c075c6341ccfbb7a4d0090487d82dd5b6 Parents: 7def53f Author: Michael Blow Authored: Tue Aug 22 00:38:08 2017 -0400 Committer: Michael Blow Committed: Mon Aug 21 21:39:29 2017 -0700 ---------------------------------------------------------------------- .../org/apache/hyracks/control/nc/NCShutdownHook.java | 2 +- .../hyracks/control/nc/NodeControllerService.java | 10 ++++++---- .../apache/hyracks/control/nc/task/ShutdownTask.java | 12 +++--------- 3 files changed, 10 insertions(+), 14 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/asterixdb/blob/de892d7c/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/NCShutdownHook.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/NCShutdownHook.java b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/NCShutdownHook.java index 162d912..1cd45b2 100644 --- a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/NCShutdownHook.java +++ b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/NCShutdownHook.java @@ -68,7 +68,7 @@ public class NCShutdownHook extends Thread { shutdownHookThread = Thread.currentThread(); watchDog.start(); nodeControllerService.stop(); - } catch (Throwable th) { // NOSONAR... This is fine since this is shutdwon hook + } catch (Throwable th) { // NOSONAR... This is fine since this is shutdown hook LOGGER.log(Level.WARNING, "Exception in executing shutdown hook", th); } } http://git-wip-us.apache.org/repos/asf/asterixdb/blob/de892d7c/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/NodeControllerService.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/NodeControllerService.java b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/NodeControllerService.java index 6b97b31..5601f9c 100644 --- a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/NodeControllerService.java +++ b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/NodeControllerService.java @@ -29,6 +29,7 @@ import java.lang.management.RuntimeMXBean; import java.lang.management.ThreadMXBean; import java.lang.reflect.Field; import java.net.InetSocketAddress; +import java.util.Arrays; import java.util.Hashtable; import java.util.List; import java.util.Map; @@ -153,7 +154,7 @@ public class NodeControllerService implements IControllerService { private final MemoryManager memoryManager; - private boolean shuttedDown = false; + private StackTraceElement[] shutdownCallStack; private IIOCounter ioCounter; @@ -369,7 +370,8 @@ public class NodeControllerService implements IControllerService { @Override public synchronized void stop() throws Exception { - if (!shuttedDown) { + if (shutdownCallStack == null) { + shutdownCallStack = new Throwable().getStackTrace(); LOGGER.log(Level.INFO, "Stopping NodeControllerService"); application.preStop(); executor.shutdownNow(); @@ -391,9 +393,9 @@ public class NodeControllerService implements IControllerService { */ heartbeatTask.cancel(); LOGGER.log(Level.INFO, "Stopped NodeControllerService"); - shuttedDown = true; } else { - LOGGER.log(Level.SEVERE, "Double shutdown calls!!", new Exception("Double shutdown calls")); + LOGGER.log(Level.SEVERE, "Duplicate shutdown call; original: " + Arrays.toString(shutdownCallStack), + new Exception("Duplicate shutdown call")); } } http://git-wip-us.apache.org/repos/asf/asterixdb/blob/de892d7c/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/task/ShutdownTask.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/task/ShutdownTask.java b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/task/ShutdownTask.java index cdbd4ad..c3aa5f4 100644 --- a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/task/ShutdownTask.java +++ b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/task/ShutdownTask.java @@ -36,6 +36,7 @@ public class ShutdownTask implements Runnable { } @Override + @SuppressWarnings("squid:S1147") // Runtime.exit() public void run() { IClusterController ccs = ncs.getClusterController(); try { @@ -45,19 +46,12 @@ public class ShutdownTask implements Runnable { // proceed with shutdown } - LOGGER.info("JVM Exiting.. Bye!"); //run the shutdown in a new thread, so we don't block this last work task Thread t = new Thread("NC " + ncs.getId() + " Shutdown") { @Override public void run() { - try { - ncs.stop(); - } catch (Exception e) { - LOGGER.log(Level.SEVERE, "Exception stopping node controller service", e); - } finally { - Runtime rt = Runtime.getRuntime(); - rt.exit(terminateNCService ? 99 : 0); - } + LOGGER.info("JVM Exiting.. Bye!"); + Runtime.getRuntime().exit(terminateNCService ? 99 : 0); } }; t.start();