weblogic.transaction.internal.TimedOutException:Transaction timed out after 301 seconds – Oracle SOA Suite:
Frequently the Oracle BPEL instances are getting rolled back with the following exception.
The root cause of the
issue is, JTA transaction getting timeout before completing the execution of
the BPEL instance; the JTA transaction should be active to complete the
execution successfully.
[2012-04-26T05:15:45.139+00:00]
[SOA1] [ERROR] [] [oracle.soa.bpel.engine] [tid:
orabpel.invoke.pool-4.thread-23] [userId: <anonymous>] [ecid:
0000JRh3heOAxGoqwSuXMG1F_qb^000aP5,0:1:100080683] [APP: soa-infra]
[composite_name: AM_Invoker] [component_name: AM_Invoker]
[component_instance_id: 5977508] The reason was The execution of this instance
"5977508" for process "AM_Invoker" is supposed to be in an
active jta transaction, the current transaction status is
"MARKED_ROLLBACK" . Root cause: null
[APP: soa-infra] Error while invoking bean
"cube delivery": JTA transaction is not in active state.[[
The transaction became
inactive when executing activity "5977508-BpInv1-BpSeq9.78-2" for
instance "5,977,508", bpel engine cannot proceed further without an
active transaction. please debug the invoked subsystem on why the transaction
is not in active status. the transaction status is "MARKED_ROLLBACK".
Message handle
error.error while attempting to process the message
"com.collaxa.cube.engine.dispatch.message.invoke.InvokeInstanceMessage";
the reported exception is: Transaction Rolledback.:
weblogic.transaction.internal.TimedOutException: Transaction timed out after
301 seconds
BEA1-2980B7B48F411EE46991
Solution:
Increase the JTA time out and the BPEL EJB transaction
timeout.
Change the JTA transaction timeout:
- Log in to Oracle WebLogic Server Administration Console.
- In the Domain Structure, select Services > JTA
- Increase the JTA transaction timeout value to some higher value like 3600
Change the BPEL EJB transaction timeout settings:
- Log in to Oracle WebLogic Server Administration Console.
- In the Domain Structure, click Deployments.
- Expand soa-infra > EJBs.
- Update the following EJBs transaction Timeout value to some higher value like 1200:
BPELActivityManagerBean
BPELEngineBean
BPELInstanceManagerBean
BPELProcessManagerBean
BPELServerManagerBean
- Click Save.
- Restart Oracle WebLogic Server.
There is no standard value for transaction timeout property.
We need to trail out and set the value.
If the component still fails with the transaction timeout
error then revisit the component design and tune the same.
Well increasing time outs cannot always be feasible specially for durable processes which runs for over lots of records and completes similar tasks across each record. For example if you are trying to process payment for 5000 employment while having to look into their leaves and timesheets, the process can run for few hours.
ReplyDeleteYou need to ensure that you localise your transaction, use transaction properties like 'requiresNew' along with implementing checkpoints (dehydrations) so that that each loop can complete within its own transaction
Hi Souvik ,
DeleteHow do you suggest to Implement checkpoints (dehydrations) , please let me know about it in more detail
Hi Albin.
ReplyDeleteWhile using the phase activity provided in SOA 11.1.1.7 to dynamically invoke a service depending upon the input at runtime i faced the above error.Though my target service is getting invoked i am not getting back the reply and it;s erroring out with the above error as mentioned by you.I tried by increasing all the Timeout values as specified by you but no luck.Can you please help me fixing the issue.