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>