Michael Blow has uploaded a new change for review.

  https://asterix-gerrit.ics.uci.edu/2159

Change subject: [NO ISSUE][HYR] Notify CC of NC shutdown only after shutdown is 
complete
......................................................................

[NO ISSUE][HYR] Notify CC of NC shutdown only after shutdown is complete

- close NC IPC manager after sending shutdown notifcation to CC

Change-Id: Idde1f69a0e0a9a948898d9271441ca95485b77f4
---
M 
hyracks-fullstack/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/NotifyShutdownWork.java
M 
hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/NodeControllerIPCI.java
M 
hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/NodeControllerService.java
M 
hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/task/ShutdownTask.java
4 files changed, 16 insertions(+), 22 deletions(-)


  git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb 
refs/changes/59/2159/1

diff --git 
a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/NotifyShutdownWork.java
 
b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/NotifyShutdownWork.java
index 5119022..83cbb91 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/NotifyShutdownWork.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/NotifyShutdownWork.java
@@ -27,9 +27,9 @@
 
 public class NotifyShutdownWork extends SynchronizableWork {
 
+    private static final Logger LOGGER = 
Logger.getLogger(NotifyShutdownWork.class.getName());
     private final ClusterControllerService ccs;
     private final String nodeId;
-    private static Logger LOGGER = 
Logger.getLogger(NotifyShutdownWork.class.getName());
 
     public NotifyShutdownWork(ClusterControllerService ccs, String nodeId) {
         this.ccs = ccs;
@@ -41,8 +41,12 @@
     public void doRun() {
         // Triggered remotely by a NC to notify that the NC is shutting down.
         ShutdownRun sRun = ccs.getShutdownRun();
-        LOGGER.info("Received shutdown acknowledgement from NC ID:" + nodeId);
-        sRun.notifyShutdown(nodeId);
+        if (sRun != null) {
+            LOGGER.info("Received shutdown acknowledgement from node " + 
nodeId);
+            sRun.notifyShutdown(nodeId);
+        } else {
+            LOGGER.info("Received unsolicted shutdown notification from node " 
+ nodeId);
+        }
     }
 
 }
diff --git 
a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/NodeControllerIPCI.java
 
b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/NodeControllerIPCI.java
index c54f153..b220039 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/NodeControllerIPCI.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/NodeControllerIPCI.java
@@ -122,7 +122,7 @@
 
             case SHUTDOWN_REQUEST:
                 final CCNCFunctions.ShutdownRequestFunction sdrf = 
(CCNCFunctions.ShutdownRequestFunction) fn;
-                ncs.getExecutor().submit(new ShutdownTask(ncs, 
sdrf.isTerminateNCService()));
+                ncs.getExecutor().submit(new 
ShutdownTask(sdrf.isTerminateNCService()));
                 return;
 
             case THREAD_DUMP_REQUEST:
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 9dd9536..a3a9ac5 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
@@ -409,6 +409,13 @@
                 heartbeatThread.interrupt();
                 heartbeatThread.join(1000); // give it 1s to stop gracefully
             }
+            try {
+                ccs.notifyShutdown(id);
+            } catch (Exception e) {
+                LOGGER.log(Level.WARNING, "Exception notifying CC of 
shutdown", e);
+            }
+            ipc.stop();
+
             LOGGER.log(Level.INFO, "Stopped NodeControllerService");
         } else {
             LOGGER.log(Level.SEVERE, "Duplicate shutdown call; original: " + 
Arrays.toString(shutdownCallStack),
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 e9cf3cb..4dd57f2 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
@@ -19,34 +19,17 @@
 
 package org.apache.hyracks.control.nc.task;
 
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import org.apache.hyracks.control.common.base.IClusterController;
-import org.apache.hyracks.control.nc.NodeControllerService;
 import org.apache.hyracks.util.ExitUtil;
 
 public class ShutdownTask implements Runnable {
-    private static final Logger LOGGER = 
Logger.getLogger(ShutdownTask.class.getName());
-    private final NodeControllerService ncs;
     private final boolean terminateNCService;
 
-    public ShutdownTask(NodeControllerService ncs, boolean terminateNCService) 
{
-        this.ncs = ncs;
+    public ShutdownTask(boolean terminateNCService) {
         this.terminateNCService = terminateNCService;
     }
 
     @Override
-    @SuppressWarnings("squid:S1147") // Runtime.exit()
     public void run() {
-        IClusterController ccs = ncs.getClusterController();
-        try {
-            ccs.notifyShutdown(ncs.getId());
-        } catch (Exception e) {
-            LOGGER.log(Level.WARNING, "Exception notifying CC of shutdown 
acknowledgment", e);
-            // proceed with shutdown
-        }
-
         ExitUtil.exit(terminateNCService ? 99 : 0);
     }
 

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Idde1f69a0e0a9a948898d9271441ca95485b77f4
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Michael Blow <mb...@apache.org>

Reply via email to