Repository: karaf Updated Branches: refs/heads/karaf-2.3.x ed0e915db -> b8b5a2bf6
[KARAF-2812] Correct order of acquired locks to avoid possible deadlock Project: http://git-wip-us.apache.org/repos/asf/karaf/repo Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/b8b5a2bf Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/b8b5a2bf Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/b8b5a2bf Branch: refs/heads/karaf-2.3.x Commit: b8b5a2bf6df1c76d34381958b6aeccd4e9bd4680 Parents: ed0e915 Author: Jean-Baptiste Onofré <[email protected]> Authored: Tue Apr 29 14:12:38 2014 +0200 Committer: Jean-Baptiste Onofré <[email protected]> Committed: Tue Apr 29 14:12:38 2014 +0200 ---------------------------------------------------------------------- .../container/internal/runner/InternalRunner.java | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/karaf/blob/b8b5a2bf/tooling/exam/container/src/main/java/org/apache/karaf/tooling/exam/container/internal/runner/InternalRunner.java ---------------------------------------------------------------------- diff --git a/tooling/exam/container/src/main/java/org/apache/karaf/tooling/exam/container/internal/runner/InternalRunner.java b/tooling/exam/container/src/main/java/org/apache/karaf/tooling/exam/container/internal/runner/InternalRunner.java index 814493b..2030def 100644 --- a/tooling/exam/container/src/main/java/org/apache/karaf/tooling/exam/container/internal/runner/InternalRunner.java +++ b/tooling/exam/container/src/main/java/org/apache/karaf/tooling/exam/container/internal/runner/InternalRunner.java @@ -86,12 +86,18 @@ public class InternalRunner { * Wait till the framework process exits. */ public void waitForExit() { - synchronized (m_frameworkProcess) { - try { - m_frameworkProcess.waitFor(); - shutdown(); - } catch (Throwable e) { - shutdown(); + if (m_shutdownHook != null) { + synchronized (m_shutdownHook) { + if (m_shutdownHook != null) { + synchronized (m_frameworkProcess) { + try { + m_frameworkProcess.waitFor(); + shutdown(); + } catch (Throwable e) { + shutdown(); + } + } + } } } }
