Explicit transactions not working

Hi All,

Please help me in the below issue:

start transaction
sequence(main)
sequence(try)[INDENT]Update Adapter service1
select Adapter Service
Update Adapter service2
publish the canonical
Update Adapter service3
commit transaction[/INDENT]
sequence (catch)[INDENT]getLastError
rollback transaction
send error mail[/INDENT]

In the above scenario the transaction is not getting rollback if publish service is failed to publish data to broker. (i.e… Update Adapter service1, Update Adapter service2 are committed automatically without commit transaction in try block)

I am using Local_Transaction for the connection, and all the adapter services are using the same connection. Please let me know if I am going wrong anywhere.

Any help would be greatly appreciated.

Exit on property for the sequence - try should be set to ‘FAILURE’. In case if you have it set to DONE, it would have committed in case of failure as well.

I hope, you are not checking this by ‘tracing’ the flow. Trace will not maintain the transactionality. You got to run it and check this in run time

-Senthil

Hi,

Thanks for the reply.
My try block’s sequence is exit on failure only and catch block’s sequence is exit on Done.

I am not tracing/step into the service, I am just trying to run the service but no luck.

  1. If any error occurs in try block execution is going to catch block but it’s not getting rollback 2. If everything is fine in try block at commit transaction flow step it’s failed to execute commit step and getting the below error:

[INDENT]Error: [ART.114.303] Adapter Runtime (Transaction): Unable to commit transaction.
null
[/INDENT]

Please let me know if you need any more details.

Hello,

I believe you are using two different connection with LOCAL_TRANSACTION in the single transaction context.

If possible try to use a single connection (LOCAL_TRANSACTION) in a transaction context or change the connection to XA_TRANSACTION.

Let us know if that works.

Cheers,
Sasanka