Author: midon
Date: Fri Mar 20 21:43:22 2009
New Revision: 756771

URL: http://svn.apache.org/viewvc?rev=756771&view=rev
Log:
ODE-551: Timeout for Check Job should be equal to mex timeout

Modified:
    ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/ODEProcess.java

Modified: 
ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/ODEProcess.java
URL: 
http://svn.apache.org/viewvc/ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/ODEProcess.java?rev=756771&r1=756770&r2=756771&view=diff
==============================================================================
--- ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/ODEProcess.java 
(original)
+++ ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/ODEProcess.java 
Fri Mar 20 21:43:22 2009
@@ -87,6 +87,7 @@
 import org.apache.ode.utils.GUID;
 import org.apache.ode.utils.Namespaces;
 import org.apache.ode.utils.ObjectPrinter;
+import org.apache.ode.utils.Properties;
 import org.apache.ode.utils.msg.MessageBundle;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
@@ -1379,7 +1380,10 @@
             event.setMexId(mex.getMessageExchangeId());
             event.setProcessId(getPID());
             event.setType(WorkEvent.Type.INVOKE_CHECK);
-            Date future = new Date(System.currentTimeMillis() + (180 * 1000));
+            // use a greater timeout to make sure the check job does not get 
executed while the service invocation is still waiting for a response
+            PartnerLinkModel model = 
_processModel.getPartnerLink(mex.getPartnerLinkModelId());
+            long timeout = (long) (getTimeout(model)*1.5);
+            Date future = new Date(System.currentTimeMillis() + timeout);
             String jobId = scheduleWorkEvent(event, future);
             mex.setProperty("invokeCheckJobId", jobId);
         }
@@ -1493,4 +1497,20 @@
         }
         return null;
     }
-}
\ No newline at end of file
+
+    public long getTimeout(PartnerLinkModel partnerLink) {
+        // OPartnerLink, PartnerLinkPartnerRoleImpl
+        final PartnerLinkPartnerRoleImpl linkPartnerRole = 
_partnerRoles.get(partnerLink);
+        long timeout = Properties.DEFAULT_MEX_TIMEOUT;
+        String timeout_property = 
_pconf.getEndpointProperties(linkPartnerRole._initialEPR).get(Properties.PROP_MEX_TIMEOUT);
+        if (timeout_property != null) {
+            try {
+                timeout = Long.parseLong(timeout_property);
+            } catch (NumberFormatException e) {
+                if (__log.isWarnEnabled())
+                    __log.warn("Mal-formatted Property: [" + 
Properties.PROP_MEX_TIMEOUT + "=" + timeout_property + "] Default value (" + 
timeout + ") will be used");
+            }
+        }
+        return timeout;
+    }
+}


Reply via email to