From 88b76b71bf7f977ee0c4185bba97e17ea0657baf Mon Sep 17 00:00:00 2001 From: Alex Heneveld Date: Wed, 20 Jan 2016 20:49:13 +0000 Subject: [PATCH] suppress explicit termination in main thread; the shutdown hook is sufficient and it's a bit of work to terminate properly in-thread --- .../core/mgmt/internal/BrooklynShutdownHooks.java | 4 +++- .../src/main/java/org/apache/brooklyn/cli/Main.java | 11 ++++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/BrooklynShutdownHooks.java b/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/BrooklynShutdownHooks.java index 677a4f6ee8..91ca5dcc2c 100644 --- a/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/BrooklynShutdownHooks.java +++ b/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/BrooklynShutdownHooks.java @@ -187,7 +187,9 @@ public void run() { } entitiesToStop.addAll(entitiesToStopOnShutdown); for (ManagementContext mgmt: managementContextsToStopAppsOnShutdown) { - entitiesToStop.addAll(mgmt.getApplications()); + if (mgmt.isRunning()) { + entitiesToStop.addAll(mgmt.getApplications()); + } } if (entitiesToStop.isEmpty()) { diff --git a/brooklyn-server/server-cli/src/main/java/org/apache/brooklyn/cli/Main.java b/brooklyn-server/server-cli/src/main/java/org/apache/brooklyn/cli/Main.java index 96527db182..03be76e926 100644 --- a/brooklyn-server/server-cli/src/main/java/org/apache/brooklyn/cli/Main.java +++ b/brooklyn-server/server-cli/src/main/java/org/apache/brooklyn/cli/Main.java @@ -482,11 +482,12 @@ public Void apply(CatalogInitialization catInit) { waitAfterLaunch(mgmt, shutdownHandler); } - // BrooklynShutdownHookJob will invoke terminate() to do mgmt.terminate() and BrooklynWebServer.stop(); - // and System.exit is invoked immediately after ... - // but seems better to do it explicitly here. - // ('launcher' is local to us so the caller *cannot* do it, and no harm in doing it twice.) - launcher.terminate(); + // do not shutdown servers here here -- + // the BrooklynShutdownHookJob will invoke that and others on System.exit() + // which happens immediately after. + // might be nice to do it explicitly here, + // but the server shutdown process has some special "shutdown apps" options + // so we'd want to refactor BrooklynShutdownHookJob to share code return null; }