Repository: karaf Updated Branches: refs/heads/master 8b02711e4 -> 2e99ce8f6
[KARAF-5315] Improve Main to deal with SIGTERM Project: http://git-wip-us.apache.org/repos/asf/karaf/repo Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/2e99ce8f Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/2e99ce8f Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/2e99ce8f Branch: refs/heads/master Commit: 2e99ce8f6efecf51dc47b11544073319a016ad66 Parents: 8b02711 Author: Jean-Baptiste Onofré <[email protected]> Authored: Wed Sep 20 11:10:35 2017 +0200 Committer: Jean-Baptiste Onofré <[email protected]> Committed: Wed Sep 20 11:10:35 2017 +0200 ---------------------------------------------------------------------- .../main/java/org/apache/karaf/main/Main.java | 24 +++++++++++++------- .../apache/karaf/main/lock/SimpleFileLock.java | 2 +- 2 files changed, 17 insertions(+), 9 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/karaf/blob/2e99ce8f/main/src/main/java/org/apache/karaf/main/Main.java ---------------------------------------------------------------------- diff --git a/main/src/main/java/org/apache/karaf/main/Main.java b/main/src/main/java/org/apache/karaf/main/Main.java index 16b0865..2d80607 100644 --- a/main/src/main/java/org/apache/karaf/main/Main.java +++ b/main/src/main/java/org/apache/karaf/main/Main.java @@ -77,18 +77,17 @@ public class Main { */ public static final String STARTUP_PROPERTIES_FILE_NAME = "startup.properties"; - - Logger LOG = Logger.getLogger(this.getClass().getName()); + private static final Logger LOG = Logger.getLogger(Main.class.getName()); private ConfigProperties config; - private Framework framework = null; + private Framework framework; private final String[] args; private int exitCode; private ShutdownCallback shutdownCallback; private KarafActivatorManager activatorManager; - private Lock lock; - private KarafLockCallback lockCallback; - private boolean exiting; + private volatile Lock lock; + private final KarafLockCallback lockCallback = new KarafLockCallback(); + private volatile boolean exiting; private AutoCloseable shutdownThread; private Thread monitorThread; @@ -240,7 +239,6 @@ public class Main { } String log4jConfigPath = System.getProperty("karaf.etc") + "/org.ops4j.pax.logging.cfg"; BootstrapLogManager.setProperties(config.props, log4jConfigPath); - lockCallback = new KarafLockCallback(); InstanceHelper.updateInstancePid(config.karafHome, config.karafBase, true); BootstrapLogManager.configureLogger(LOG); @@ -347,7 +345,17 @@ public class Main { signalHandlerClass }, (proxy, method, args) -> { - Main.this.destroy(); + new Thread() { + @Override + public void run() { + try { + exiting = true; + framework.stop(); + } catch (BundleException e) { + e.printStackTrace(); + } + } + }.start(); return null; } ); http://git-wip-us.apache.org/repos/asf/karaf/blob/2e99ce8f/main/src/main/java/org/apache/karaf/main/lock/SimpleFileLock.java ---------------------------------------------------------------------- diff --git a/main/src/main/java/org/apache/karaf/main/lock/SimpleFileLock.java b/main/src/main/java/org/apache/karaf/main/lock/SimpleFileLock.java index 162d488..281a497 100644 --- a/main/src/main/java/org/apache/karaf/main/lock/SimpleFileLock.java +++ b/main/src/main/java/org/apache/karaf/main/lock/SimpleFileLock.java @@ -71,7 +71,7 @@ public class SimpleFileLock implements Lock { return lock != null; } - public void release() throws Exception { + public synchronized void release() throws Exception { if (lock != null && lock.isValid()) { LOG.info("Releasing lock " + lockPath.getPath()); lock.release();
