2. It synchronously calls GetDeviceState (instance 4961222)
3. GetDeviceState completes successfully within 6.106 seconds
<summary>With debugging enabled, the domain.log shows the following:
when invoking locally the endpoint 'http://oradev1.thisisahmed.com:7777/orabpel/default/GetDeviceState/1.0', ; nested exception is
com.oracle.bpel.client.delivery.ReceiveTimeOutException: Waiting for response has timed out
</summary>
<2010-06-25 07:55:49,226> <DEBUG> <default.collaxa.cube.engine.delivery> <DeliveryHandler::initialRequestAnyType>5. The parent process times out in 1000 seconds which is the value of our syncMaxWaitTime (as shown in the Tree Finder figure above).
com.oracle.bpel.client.delivery.ReceiveTimeOutException: Waiting for response has timed out. The conversation id is bpel://localhost/default/SubscriberActivation~1.0/5040805-BpInv1-BpSeq4.7-2. Please check the process instance for detail.
at com.collaxa.cube.engine.delivery.DeliveryHandler.initialRequestAnyType(DeliveryHandler.java:543)
at com.collaxa.cube.engine.delivery.DeliveryHandler.initialRequest(DeliveryHandler.java:457)
This only happens when both nodes of the cluster are up and running. If only a single node is running, this issue does not occur.
(a) Increasing transaction-timeout="7200" in $ORACLE_HOME/j2ee/oc4j_soa/config/transaction-manager.xml
(b) Increasing transaction-timeout="3600" to a lower value for CubeEngineBean, DispatcherBean, CubeDeliveryBean, DeliveryBean, DomainManagerBean, and ProcessManagerBean in
$ORACLE_HOME/j2ee/oc4j_soa/application-deployments/orabpel/ejb_ob_engine/orion-ejb-jar.xml
(c) Increasing syncMaxWaitTime to 1000 in $ORACLE_HOME/bpel/domains/default/config/domain.xml
Adding the transaction participate property to the partnerlink won't help either: <property name="transaction">participate</property>
- Client makes sync request to BPEL1.
BPEL1 makes sync request to BPEL2. BPEL2 makes sync request to an external service (and BPEL 2 receives the sync response back). BPEL2 has an async “receive” activity. BPEL2 responds to BPEL1 synchronously BPEL1 responds to client synchronously.
Client makes sync request to BPEL1. BPEL1 makes sync request to BPEL2. BPEL2 makes sync request to external service (and BPEL 2 receives the sync response back). BPEL2 has an async “receive” activity, but receives response on Node 2. BPEL2 tries to reply to BPEL1, but no link back to BPEL1 (BPEL2 completes successfully though). BPEL1 times out.
1 comment:
Hi Ahmed,
I had the same thing happening aswell. The reason for this is that synchronous bpel process instances 'wait' through a local JVM mutex. So even if you 'cluster' your bpel container with multiple JVM's on one machine, you can experience this problem. We discussed this aswell on Mark Kelderman's blog: http://orasoa.blogspot.com/2010/03/bpel-10g-clustering-with-jgroups-on.html
To prevent thread starvationin the JVM, there is a timeout parameter maxsyncwait of 45 seconds. So after 45 seconds the synchronous process instance will timeout.
regards,
Tony van Esch
Post a Comment