You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by jg...@apache.org on 2014/07/26 03:51:57 UTC

[15/50] git commit: [KARAF-1561] Restart Framework from Web Console's System Information tab results in Karaf dying

[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/remotes/karaf-2.3.x
Commit: 19442ce1c737375056df636e10bb01fd2dbada5f
Parents: 3160b7c
Author: Guillaume Nodet <gn...@gmail.com>
Authored: Fri Jul 11 16:21:56 2014 +0200
Committer: Guillaume Nodet <gn...@gmail.com>
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);
         }