You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@asterixdb.apache.org by mb...@apache.org on 2017/08/22 04:39:49 UTC
asterixdb git commit: [ASTERIXDB-2055][HYR][CLUS] Avoid double
shutdown
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 <mb...@apache.org>
Tested-by: Michael Blow <mb...@apache.org>
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 <mb...@apache.org>
Authored: Tue Aug 22 00:38:08 2017 -0400
Committer: Michael Blow <mb...@apache.org>
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();