Repository: karaf Updated Branches: refs/heads/karaf-2.3.x 3160b7c0e -> 19442ce1c
[KARAF-1561] Restart Framework from Web Console's System Information tab results in Karaf dying Project: http://git-wip-us.apache.org/repos/asf/karaf/repo Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/19442ce1 Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/19442ce1 Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/19442ce1 Branch: refs/heads/karaf-2.3.x Commit: 19442ce1c737375056df636e10bb01fd2dbada5f Parents: 3160b7c Author: Guillaume Nodet <[email protected]> Authored: Fri Jul 11 16:21:56 2014 +0200 Committer: Guillaume Nodet <[email protected]> Committed: Fri Jul 11 16:23:27 2014 +0200 ---------------------------------------------------------------------- .../main/java/org/apache/karaf/main/Main.java | 23 +++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/karaf/blob/19442ce1/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 65e9ae0..ffd8344 100644 --- a/main/src/main/java/org/apache/karaf/main/Main.java +++ b/main/src/main/java/org/apache/karaf/main/Main.java @@ -363,7 +363,18 @@ public class Main { } while (true) { FrameworkEvent event = framework.waitForStop(0); - if (event.getType() != FrameworkEvent.STOPPED_UPDATE) { + if (event.getType() == FrameworkEvent.STOPPED_UPDATE) { + unlock(); + while (framework.getState() != Bundle.STARTING && framework.getState() != Bundle.ACTIVE) { + Thread.sleep(10); + } + new Thread() { + @Override + public void run() { + lock(configProps); + } + }.start(); + } else { return; } } @@ -1395,7 +1406,6 @@ public class Main { String clz = props.getProperty(PROPERTY_LOCK_CLASS, PROPERTY_LOCK_CLASS_DEFAULT); lock = (Lock) Class.forName(clz).getConstructor(Properties.class).newInstance(props); boolean lockLogged = false; - setStartLevel(lockStartLevel); while (!exiting) { if (lock.lock()) { if (lockLogged) { @@ -1427,9 +1437,12 @@ public class Main { startLevelLock.wait(shutdownTimeout); } } - } else if (!lockLogged) { - LOG.info("Waiting for the lock ..."); - lockLogged = true; + } else { + setStartLevel(lockStartLevel); + if (!lockLogged) { + LOG.info("Waiting for the lock ..."); + lockLogged = true; + } } Thread.sleep(lockDelay); }
