Michael Blow has submitted this change and it was merged.

Change subject: Remove Redundant Shutdown Hook
......................................................................


Remove Redundant Shutdown Hook

Currently, when we start a NodeControllerService, we add
its shutdown hook to the runtime. The NCDriver does that as well.
This change removes the NCDriver's addition of the shutdown hook
and moves the NCShutdown hook to its own class.

Change-Id: Ie9b4e2c870feb36fb25f35034dcfe3e315b9d183
Reviewed-on: https://asterix-gerrit.ics.uci.edu/1323
Sonar-Qube: Jenkins <[email protected]>
Tested-by: Jenkins <[email protected]>
Integration-Tests: Jenkins <[email protected]>
Reviewed-by: Yingyi Bu <[email protected]>
---
M 
hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/NCDriver.java
A 
hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/NCShutdownHook.java
M 
hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/NodeControllerService.java
3 files changed, 46 insertions(+), 36 deletions(-)

Approvals:
  Yingyi Bu: Looks good to me, approved
  Jenkins: Verified; No violations found; Verified



diff --git 
a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/NCDriver.java
 
b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/NCDriver.java
index 2d0a49d..cbd8edd 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/NCDriver.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/NCDriver.java
@@ -39,23 +39,12 @@
                 System.exit(1);
             }
             ncConfig.loadConfigAndApplyDefaults();
-
             final NodeControllerService nService = new 
NodeControllerService(ncConfig);
             if (LOGGER.isLoggable(Level.SEVERE)) {
                 LOGGER.severe("Setting uncaught exception handler " + 
nService.getLifeCycleComponentManager());
             }
             
Thread.currentThread().setUncaughtExceptionHandler(nService.getLifeCycleComponentManager());
             nService.start();
-            Runtime.getRuntime().addShutdownHook(new Thread() {
-                @Override
-                public void run() {
-                    try {
-                        nService.stop();
-                    } catch (Exception e) {
-                        e.printStackTrace();
-                    }
-                }
-            });
             while (true) {
                 Thread.sleep(10000);
             }
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
new file mode 100644
index 0000000..a8b9461
--- /dev/null
+++ 
b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/NCShutdownHook.java
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.hyracks.control.nc;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * Shutdown hook that invokes {@link NodeControllerService#stop() stop} method.
+ */
+public class NCShutdownHook extends Thread {
+    private static final Logger LOGGER = 
Logger.getLogger(NCShutdownHook.class.getName());
+    private final NodeControllerService nodeControllerService;
+    public NCShutdownHook(NodeControllerService nodeControllerService) {
+        this.nodeControllerService = nodeControllerService;
+    }
+
+    @Override
+    public void run() {
+        LOGGER.info("Shutdown hook in progress");
+        try {
+            nodeControllerService.stop();
+        } catch (Exception e) {
+            LOGGER.log(Level.WARNING, "Exception in executing shutdown hook", 
e);
+        }
+    }
+}
\ No newline at end of file
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 ed46b53..540b4d0 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
@@ -79,16 +79,16 @@
 import org.apache.hyracks.control.nc.partitions.PartitionManager;
 import org.apache.hyracks.control.nc.resources.memory.MemoryManager;
 import org.apache.hyracks.control.nc.runtime.RootHyracksContext;
+import org.apache.hyracks.control.nc.task.ShutdownTask;
+import org.apache.hyracks.control.nc.task.ThreadDumpTask;
 import org.apache.hyracks.control.nc.work.AbortTasksWork;
 import org.apache.hyracks.control.nc.work.ApplicationMessageWork;
 import org.apache.hyracks.control.nc.work.BuildJobProfilesWork;
 import org.apache.hyracks.control.nc.work.CleanupJobletWork;
 import org.apache.hyracks.control.nc.work.DeployBinaryWork;
 import org.apache.hyracks.control.nc.work.ReportPartitionAvailabilityWork;
-import org.apache.hyracks.control.nc.task.ShutdownTask;
 import org.apache.hyracks.control.nc.work.StartTasksWork;
 import org.apache.hyracks.control.nc.work.StateDumpWork;
-import org.apache.hyracks.control.nc.task.ThreadDumpTask;
 import org.apache.hyracks.control.nc.work.UnDeployBinaryWork;
 import org.apache.hyracks.ipc.api.IIPCHandle;
 import org.apache.hyracks.ipc.api.IIPCI;
@@ -328,7 +328,7 @@
         }
 
         //add JVM shutdown hook
-        Runtime.getRuntime().addShutdownHook(new JVMShutdownHook(this));
+        Runtime.getRuntime().addShutdownHook(new NCShutdownHook(this));
     }
 
     private void startApplication() throws Exception {
@@ -598,27 +598,5 @@
 
     public MessagingNetworkManager getMessagingNetworkManager() {
         return messagingNetManager;
-    }
-
-    /**
-     * Shutdown hook that invokes {@link NodeControllerService#stop() stop} 
method.
-     */
-    private static class JVMShutdownHook extends Thread {
-
-        private final NodeControllerService nodeControllerService;
-
-        public JVMShutdownHook(NodeControllerService ncAppEntryPoint) {
-            this.nodeControllerService = ncAppEntryPoint;
-        }
-
-        @Override
-        public void run() {
-            LOGGER.info("Shutdown hook in progress");
-            try {
-                nodeControllerService.stop();
-            } catch (Exception e) {
-                LOGGER.log(Level.WARNING, "Exception in executing shutdown 
hook", e);
-            }
-        }
     }
 }

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/1323
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Ie9b4e2c870feb36fb25f35034dcfe3e315b9d183
Gerrit-PatchSet: 4
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: abdullah alamoudi <[email protected]>
Gerrit-Reviewer: Jenkins <[email protected]>
Gerrit-Reviewer: Michael Blow <[email protected]>
Gerrit-Reviewer: Till Westmann <[email protected]>
Gerrit-Reviewer: Yingyi Bu <[email protected]>
Gerrit-Reviewer: abdullah alamoudi <[email protected]>

Reply via email to