Repository: karaf Updated Branches: refs/heads/karaf-2.x 45c3e4096 -> 33bab6898
[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/33bab689 Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/33bab689 Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/33bab689 Branch: refs/heads/karaf-2.x Commit: 33bab6898abc40f7acc5e572c4b16f52991937b3 Parents: 45c3e40 Author: Guillaume Nodet <gno...@gmail.com> Authored: Fri Jul 11 16:21:56 2014 +0200 Committer: Guillaume Nodet <gno...@gmail.com> Committed: Fri Jul 11 16:25:42 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/33bab689/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 ece7b3a..3238653 100644 --- a/main/src/main/java/org/apache/karaf/main/Main.java +++ b/main/src/main/java/org/apache/karaf/main/Main.java @@ -421,7 +421,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; } } @@ -1447,7 +1458,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) { @@ -1479,9 +1489,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); }