You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by jb...@apache.org on 2014/04/29 14:13:13 UTC
git commit: [KARAF-2812] Correct order of acquired locks to avoid
possible deadlock
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é <jb...@apache.org>
Authored: Tue Apr 29 14:12:38 2014 +0200
Committer: Jean-Baptiste Onofré <jb...@apache.org>
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();
+ }
+ }
+ }
}
}
}