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;
}