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

Reply via email to