You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by jb...@apache.org on 2017/09/20 09:10:56 UTC

karaf git commit: [KARAF-5315] Improve Main to deal with SIGTERM

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é <jb...@apache.org>
Authored: Wed Sep 20 11:10:35 2017 +0200
Committer: Jean-Baptiste Onofré <jb...@apache.org>
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();