You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by bo...@apache.org on 2009/09/30 01:46:34 UTC

svn commit: r820127 - /ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelServerImpl.java

Author: boisvert
Date: Tue Sep 29 23:46:33 2009
New Revision: 820127

URL: http://svn.apache.org/viewvc?rev=820127&view=rev
Log:
Prevent application-level deadlock due to ProcessDefReaper; can happen since the lock may queue readLock() requests after a pending writeLock() request

Modified:
    ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelServerImpl.java

Modified: ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelServerImpl.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelServerImpl.java?rev=820127&r1=820126&r2=820127&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelServerImpl.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelServerImpl.java Tue Sep 29 23:46:33 2009
@@ -448,7 +448,7 @@
             try {
                 while (true) {
                     Thread.sleep(pollingTime);
-                    _mngmtLock.writeLock().lockInterruptibly();
+                    if (!_mngmtLock.writeLock().tryLock(100L, TimeUnit.MILLISECONDS)) continue;
                     try { 
                         __log.debug("Kicking reaper, OProcess instances: " + OProcess.instanceCount);
                         // Copying the runnning process list to avoid synchronization