X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fconfig%2Fshutdown-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fconfig%2Fyang%2Fshutdown%2Fimpl%2FShutdownServiceImpl.java;h=f9622192fec873f3fc01c1396aa4c06ccb8f1624;hp=584ea1766e2cd7ebaba141f7f02449473bec88b1;hb=df2aabb0c61b9be04623c2a660c5a1592ff051f7;hpb=d67608349eca39dd2b4b77923b1500d25a664e52 diff --git a/opendaylight/config/shutdown-impl/src/main/java/org/opendaylight/controller/config/yang/shutdown/impl/ShutdownServiceImpl.java b/opendaylight/config/shutdown-impl/src/main/java/org/opendaylight/controller/config/yang/shutdown/impl/ShutdownServiceImpl.java index 584ea1766e..f9622192fe 100644 --- a/opendaylight/config/shutdown-impl/src/main/java/org/opendaylight/controller/config/yang/shutdown/impl/ShutdownServiceImpl.java +++ b/opendaylight/config/shutdown-impl/src/main/java/org/opendaylight/controller/config/yang/shutdown/impl/ShutdownServiceImpl.java @@ -82,6 +82,7 @@ class Impl implements ShutdownService { class StopSystemBundleThread extends Thread { private static final Logger logger = LoggerFactory.getLogger(StopSystemBundleThread.class); + public static final String CONFIG_MANAGER_SYMBOLIC_NAME = "org.opendaylight.controller.config-manager"; private final Bundle systemBundle; StopSystemBundleThread(Bundle systemBundle) { @@ -94,6 +95,14 @@ class StopSystemBundleThread extends Thread { try { // wait so that JMX response is received Thread.sleep(1000); + // first try to stop config-manager + Bundle configManager = findConfigManager(); + if (configManager != null){ + logger.debug("Stopping config-manager"); + configManager.stop(); + Thread.sleep(1000); + } + logger.debug("Stopping system bundle"); systemBundle.stop(); } catch (BundleException e) { logger.warn("Can not stop OSGi server", e); @@ -101,6 +110,16 @@ class StopSystemBundleThread extends Thread { logger.warn("Shutdown process interrupted", e); } } + + private Bundle findConfigManager() { + for(Bundle bundle: systemBundle.getBundleContext().getBundles()){ + if (CONFIG_MANAGER_SYMBOLIC_NAME.equals(bundle.getSymbolicName())) { + return bundle; + } + } + return null; + } + } class CallSystemExitThread extends Thread {