JDBCAdapter Services.Adapter Runtime (Transaction): Unable to commit transaction

Unable to commit or rollback the transactions via JDBCAdapter Services.
I couldn’t figure out why, and the error dump doesn’t tell much either.
I did follow the try/catch block and initiate the startTransaction before the whole sequence block, invoke commitTransaction in the Try(on failure) and rollback in the Catch(on done).

Anyone has some general ideas around where to look at or how we normally debug it?

com.wm.pkg.art.error.DetailedServiceException: [ART.114.303] Adapter Runtime (Transaction): Unable to commit transaction.
null

at com.wm.pkg.art.error.DetailedServiceException.create(DetailedServiceException.java:125)

at com.wm.pkg.art.error.DetailedServiceException.create(DetailedServiceException.java:116)

at com.wm.pkg.art.error.DetailedServiceException.create(DetailedServiceException.java:68)

at com.wm.pkg.art.transaction.Service.commitTransaction(Service.java:158)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:324)

at com.wm.app.b2b.server.JavaService.baseInvoke(JavaService.java:287)

at com.wm.app.b2b.server.invoke.InvokeManager.process(InvokeManager.java:587)

at com.wm.app.b2b.server.invoke.StatisticsProcessor.process(StatisticsProcessor.java:44)

at com.wm.app.b2b.server.invoke.ServiceCompletionImpl.process(ServiceCompletionImpl.java:229)

at com.wm.app.b2b.server.invoke.ValidateProcessor.process(ValidateProcessor.java:49)

at com.wm.app.b2b.server.ACLManager.process(ACLManager.java:198)

at com.wm.app.b2b.server.invoke.DispatchProcessor.process(DispatchProcessor.java:39)

at com.wm.app.b2b.server.AuditLogManager.process(AuditLogManager.java:407)

at com.wm.app.b2b.server.invoke.InvokeManager.invoke(InvokeManager.java:503)

at com.wm.app.b2b.server.invoke.InvokeManager.invoke(InvokeManager.java:367)

at com.wm.app.b2b.server.ServiceManager.invoke(ServiceManager.java:246)

at com.wm.app.b2b.server.BaseService.invoke(BaseService.java:157)

at com.wm.lang.flow.FlowInvoke.invoke(FlowInvoke.java:324)

at com.wm.lang.flow.FlowState.invokeNode(FlowState.java:581)

at com.wm.lang.flow.FlowState.stepIncremental(FlowState.java:487)

at com.wm.lang.flow.FlowState.invoke(FlowState.java:376)

at wm.server.flowimpl.stepFlow(flowimpl.java:183)

at sun.reflect.GeneratedMethodAccessor17.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:324)

at com.wm.app.b2b.server.JavaService.baseInvoke(JavaService.java:294)

at com.wm.app.b2b.server.invoke.InvokeManager.process(InvokeManager.java:587)

at com.wm.app.b2b.server.invoke.StatisticsProcessor.process(StatisticsProcessor.java:44)

at com.wm.app.b2b.server.invoke.ServiceCompletionImpl.process(ServiceCompletionImpl.java:229)

at com.wm.app.b2b.server.invoke.ValidateProcessor.process(ValidateProcessor.java:49)

at com.wm.app.b2b.server.ACLManager.process(ACLManager.java:198)

at com.wm.app.b2b.server.invoke.DispatchProcessor.process(DispatchProcessor.java:39)

at com.wm.app.b2b.server.AuditLogManager.process(AuditLogManager.java:407)

at com.wm.app.b2b.server.invoke.InvokeManager.invoke(InvokeManager.java:503)

at com.wm.app.b2b.server.invoke.InvokeManager.invoke(InvokeManager.java:367)

at com.wm.app.b2b.server.ServiceManager.invoke(ServiceManager.java:246)

at com.wm.app.b2b.server.comm.DefaultServerRequestHandler.handleMessage(DefaultServerRequestHandler.java:119)

at com.wm.app.b2b.server.HTTPMessageHandler.process(HTTPMessageHandler.java:167)

at com.wm.app.b2b.server.Dispatch.run(Dispatch.java:298)

at com.wm.util.pool.PooledThread.run(PooledThread.java:105)

at java.lang.Thread.run(Thread.java:534)

Fixed.

The gotcha is there is an implicit transactions happened b4 that.

cheers

Hi,

I got the same issue,

pub.art.transaction:startTransaction
->>SEQUENCE(Try/Catch)
---->>SEQUENCE(Try)
– Insert Adapter operation
– Update Adapter operation
– pub.art.transaction:commitTransaction
---->>SEQUENCE(Catch)
– pub.flow:getLastError
– pub.art.transaction:rollbackTransaction

In the above scenario, consider/assume error occured in UPDATE operation.

Case1: If we run the service everything working fine. i.e. Once UPDATE operation failed, INSERT operation gets roll backed automatically as per the above code. [No issue in Case1]

Case2: If we do the trace, INSERT operation gets committed and we get the error “com.wm.pkg.art.error.DetailedServiceException: [ART.114.306] Adapter Runtime (Transaction): Unable to rollback transaction.
null
” Why its getting committed? By the way do we have any option to know what are all the steps gets executed in run time [which we know/see during debug].

Regards,
Sam

Hi,

Check the following
http://www.wmusers.com/forum/showthread.php?t=15948&highlight=step+trace+adapter+service&page=2

Also refer JDBC adapter guide(page NO:211) which says “You cannot step or trace a flow that contains a transacted adapter service or
a transacted JMS service.”

HTH!