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();