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 07:29:20 UTC

karaf git commit: [KARAF-5315] Synchronize lock methods

Repository: karaf
Updated Branches:
  refs/heads/karaf-4.1.x 16bdd6446 -> b02e7eb56


[KARAF-5315] Synchronize lock methods


Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/b02e7eb5
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/b02e7eb5
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/b02e7eb5

Branch: refs/heads/karaf-4.1.x
Commit: b02e7eb569c889b0c6e6f2f4ff360b25dab1cbcb
Parents: 16bdd64
Author: Jean-Baptiste Onofré <jb...@apache.org>
Authored: Mon Sep 18 10:51:37 2017 +0200
Committer: Jean-Baptiste Onofré <jb...@apache.org>
Committed: Wed Sep 20 09:11:42 2017 +0200

----------------------------------------------------------------------
 .../main/java/org/apache/karaf/main/Main.java   | 26 ++++++++++++++------
 .../apache/karaf/main/lock/SimpleFileLock.java  |  5 ++--
 2 files changed, 21 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/b02e7eb5/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 e5375b5..66b6a81 100644
--- a/main/src/main/java/org/apache/karaf/main/Main.java
+++ b/main/src/main/java/org/apache/karaf/main/Main.java
@@ -78,18 +78,19 @@ public class Main {
      */
     public static final String STARTUP_PROPERTIES_FILE_NAME = "startup.properties";
 
+    private static final Logger LOG = Logger.getLogger(Main.class.getName());
 
-    Logger LOG = Logger.getLogger(this.getClass().getName());
+    private final String[] args;
+
+    private final KarafLockCallback lockCallback = new KarafLockCallback();
 
     private ConfigProperties config;
-    private Framework framework = null;
-    private final String[] args;
+    private Framework framework;
     private int exitCode;
     private ShutdownCallback shutdownCallback;
     private KarafActivatorManager activatorManager;
-    private Lock lock;
-    private KarafLockCallback lockCallback;
-    private boolean exiting;
+    private volatile Lock lock;
+    private volatile boolean exiting;
     
     /**
      * <p>
@@ -239,7 +240,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 +347,17 @@ public class Main {
                 },
                 new InvocationHandler() {
                     public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
-                        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/b02e7eb5/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 cc9cd3e..162d488 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
@@ -58,7 +58,7 @@ public class SimpleFileLock implements Lock {
         }
     }
 
-    public boolean lock() throws Exception {
+    public synchronized boolean lock() throws Exception {
         LOG.info("Trying to lock " + lockPath.getPath());
         if (lock == null) {
             lock = lockFile.getChannel().tryLock();
@@ -80,7 +80,7 @@ public class SimpleFileLock implements Lock {
         lock = null;
     }
  
-    public boolean isAlive() throws Exception {
+    public synchronized boolean isAlive() throws Exception {
         return lock != null && lock.isValid() && lockPath.exists();
     }
 
@@ -102,6 +102,7 @@ public class SimpleFileLock implements Lock {
         if (rc == null) {
             rc = lock;
         }
+
         return rc;
     }