You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomee.apache.org by Radhakrishna Kalyan <nr...@gmail.com> on 2014/12/19 11:35:39 UTC

Exception while inserting in @Asynchronous

Hi,

We have deployed our application for the first time in our Production env
yesterday, and we got the following exception.

We have Asynchronous schedule job running every day at a given time say
14.00.
The method performs a query operation on a Transaction table and create a
text file with those transactions found for a given criteria.
After creating the text file the method also create an entry in another
table called Batch table identifying which batch files have been created.

Also a rest interface is exposed to search the Batch table and list out the
entries and find out which batch files are created.


Here is the exception log stacktrace


dec 18, 2014 2:20:13 EM
org.apache.openejb.core.transaction.EjbTransactionUtil
handleSystemException
SEVERE: EjbTransactionUtil.handleSystemException: The transaction has
been marked rollback only because the bean encountered a
non-application exception
:org.hibernate.exception.LockAcquisitionException : could not execute
query
javax.ejb.EJBTransactionRolledbackException: The transaction has been
marked rollback only because the bean encountered a non-application
exception :org.hibernate.exception.LockAcquisitionException : could
not execute query
        at org.apache.openejb.core.ivm.BaseEjbProxyHandler.convertException(BaseEjbProxyHandler.java:381)
        at org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:312)
        at com.netgiro.centralizedbatch.db.dao.BatchOrderDao$$LocalBeanProxy.getCount(com/netgiro/centralizedbatch/db/dao/BatchOrderDao.java)
        at com.netgiro.centralizedbatch.rest.resources.BatchOrdersResource.searchBatchOrders(BatchOrdersResource.java:163)
        at sun.reflect.GeneratedMethodAccessor46.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:192)
        at org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:173)
        at com.netgiro.centralizedbatch.interceptors.AuditLogInterceptor.aroundInvoke(AuditLogInterceptor.java:22)
        at sun.reflect.GeneratedMethodAccessor22.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:192)
        at org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:173)
        at org.apache.openejb.monitoring.StatsInterceptor.record(StatsInterceptor.java:181)
        at org.apache.openejb.monitoring.StatsInterceptor.invoke(StatsInterceptor.java:100)
        at sun.reflect.GeneratedMethodAccessor21.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:192)
        at org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:173)
        at org.apache.openejb.core.interceptor.InterceptorStack.invoke(InterceptorStack.java:85)
        at org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:227)
        at org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:194)
        at org.apache.openejb.util.proxy.ProxyEJB$Handler.invoke(ProxyEJB.java:74)
        at com.netgiro.centralizedbatch.rest.resources.BatchOrdersResource$$LocalBeanProxy.searchBatchOrders(com/netgiro/centralizedbatch/rest/resources/BatchOrdersResource.java)
        at sun.reflect.GeneratedMethodAccessor45.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.openejb.server.cxf.rs.OpenEJBEJBInvoker.performInvocation(OpenEJBEJBInvoker.java:89)
        at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:104)
        at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:205)
        at org.apache.openejb.server.cxf.rs.OpenEJBEJBInvoker.invoke(OpenEJBEJBInvoker.java:62)
        at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:102)
        at org.apache.openejb.server.cxf.rs.AutoJAXRSInvoker.invoke(AutoJAXRSInvoker.java:64)
        at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58)
        at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:94)
        at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:272)
        at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
        at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:239)
        at org.apache.openejb.server.cxf.rs.CxfRsHttpListener.onMessage(CxfRsHttpListener.java:187)
        at org.apache.openejb.server.httpd.OpenEJBHttpRegistry$ClassLoaderHttpListener.onMessage(OpenEJBHttpRegistry.java:111)
        at org.apache.openejb.server.httpd.HttpListenerRegistry.onMessage(HttpListenerRegistry.java:71)
        at org.apache.openejb.server.httpd.OpenEJBHttpServer.process(OpenEJBHttpServer.java:261)
        at org.apache.openejb.server.httpd.OpenEJBHttpServer.processRequest(OpenEJBHttpServer.java:194)
        at org.apache.openejb.server.httpd.OpenEJBHttpServer.service(OpenEJBHttpServer.java:109)
        at org.apache.openejb.server.httpd.HttpEjbServer.service(HttpEjbServer.java:63)
        at org.apache.openejb.server.ServerServiceFilter.service(ServerServiceFilter.java:65)
        at org.apache.openejb.server.ServerServiceFilter.service(ServerServiceFilter.java:65)
        at org.apache.openejb.server.ServiceStats.service(ServiceStats.java:54)
        at org.apache.openejb.server.ServerServiceFilter.service(ServerServiceFilter.java:65)
        at org.apache.openejb.server.ServiceLogger.service(ServiceLogger.java:93)
        at org.apache.openejb.server.ServerServiceFilter.service(ServerServiceFilter.java:65)
        at org.apache.openejb.server.ServicePool.access$201(ServicePool.java:39)
        at org.apache.openejb.server.ServicePool$3.run(ServicePool.java:198)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:744)
Caused by: org.hibernate.exception.LockAcquisitionException: could not
execute query
        at org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:94)
        at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49)
        at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125)
        at org.hibernate.loader.Loader.doList(Loader.java:2551)
        at org.hibernate.loader.Loader.doList(Loader.java:2534)
        at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2364)
        at org.hibernate.loader.Loader.list(Loader.java:2359)
        at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:124)
        at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1587)
        at org.hibernate.internal.CriteriaImpl.list(CriteriaImpl.java:374)
        at org.hibernate.internal.CriteriaImpl.uniqueResult(CriteriaImpl.java:396)
        at com.netgiro.centralizedbatch.db.dao.BatchOrderDao.getCount(BatchOrderDao.java:223)
        at sun.reflect.GeneratedMethodAccessor47.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:192)
        at org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:173)
        at com.netgiro.centralizedbatch.interceptors.AuditLogInterceptor.aroundInvoke(AuditLogInterceptor.java:22)
        at sun.reflect.GeneratedMethodAccessor22.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:192)
        at org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:173)
        at org.apache.openejb.monitoring.StatsInterceptor.record(StatsInterceptor.java:181)
        at org.apache.openejb.monitoring.StatsInterceptor.invoke(StatsInterceptor.java:100)
        at sun.reflect.GeneratedMethodAccessor21.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:192)
        at org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:173)
        at org.apache.openejb.core.interceptor.InterceptorStack.invoke(InterceptorStack.java:85)
        at org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:227)
        at org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:194)
        at org.apache.openejb.core.ivm.EjbObjectProxyHandler.synchronizedBusinessMethod(EjbObjectProxyHandler.java:308)
        at org.apache.openejb.core.ivm.EjbObjectProxyHandler.businessMethod(EjbObjectProxyHandler.java:303)
        at org.apache.openejb.core.ivm.EjbObjectProxyHandler._invoke(EjbObjectProxyHandler.java:92)
        at org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:308)
        ... 57 more
Caused by: com.ibm.db2.jcc.am.po: DB2 SQL Error: SQLCODE=-911,
SQLSTATE=40001, SQLERRMC=68, DRIVER=4.7.112
        at com.ibm.db2.jcc.am.dd.a(dd.java:663)
        at com.ibm.db2.jcc.am.dd.a(dd.java:60)
        at com.ibm.db2.jcc.am.dd.a(dd.java:127)
        at com.ibm.db2.jcc.am.dm.b(dm.java:3751)
        at com.ibm.db2.jcc.t4.eb.h(eb.java:278)
        at com.ibm.db2.jcc.t4.eb.a(eb.java:239)
        at com.ibm.db2.jcc.t4.eb.c(eb.java:31)
        at com.ibm.db2.jcc.t4.u.a(u.java:32)
        at com.ibm.db2.jcc.t4.j.Zb(j.java:259)
        at com.ibm.db2.jcc.am.dm.X(dm.java:3544)
        at com.ibm.db2.jcc.t4.d.f(d.java:1891)
        at com.ibm.db2.jcc.am.ic.a(ic.java:201)
        at com.ibm.db2.jcc.t4.d.a(d.java:109)
        at com.ibm.db2.jcc.am.dm.c(dm.java:367)
        at com.ibm.db2.jcc.am.dm.next(dm.java:294)
        at org.apache.commons.dbcp.DelegatingResultSet.next(DelegatingResultSet.java:207)
        at org.apache.commons.dbcp.DelegatingResultSet.next(DelegatingResultSet.java:207)
        at org.hibernate.loader.Loader.processResultSet(Loader.java:946)
        at org.hibernate.loader.Loader.doQuery(Loader.java:917)
        at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:348)
        at org.hibernate.loader.Loader.doList(Loader.java:2548)
        ... 90 more

dec 18, 2014 2:21:12 EM org.apache.openejb.core.ivm.EjbObjectProxyHandler$1 call
SEVERE: EjbObjectProxyHandler: Asynchronous call to
'BatchJobSchedulerService' on 'scheduleBatchOrder' failed
org.apache.openejb.ApplicationException:
org.apache.openejb.core.transaction.TransactionRolledbackException:
Transaction was rolled back, presumably because setRollbackOnly was
called during a synchronization: Transaction was rolled back,
presumably because setRollbackOnly was called during a synchronization
        at org.apache.openejb.core.transaction.JtaTransactionPolicy.completeTransaction(JtaTransactionPolicy.java:339)
        at org.apache.openejb.core.transaction.TxRequired.commit(TxRequired.java:76)
        at org.apache.openejb.core.transaction.EjbTransactionUtil.afterInvoke(EjbTransactionUtil.java:77)
        at org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:246)
        at org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:194)
        at org.apache.openejb.core.ivm.EjbObjectProxyHandler.synchronizedBusinessMethod(EjbObjectProxyHandler.java:308)
        at org.apache.openejb.core.ivm.EjbObjectProxyHandler$1.call(EjbObjectProxyHandler.java:284)
        at org.apache.openejb.async.AsynchronousPool$AsynchronousCall.call(AsynchronousPool.java:111)
        at java.util.concurrent.FutureTask.run(FutureTask.java:262)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:744)
Caused by: org.apache.openejb.core.transaction.TransactionRolledbackException:
Transaction was rolled back, presumably because setRollbackOnly was
called during a synchronization
        at org.apache.openejb.core.transaction.JtaTransactionPolicy.completeTransaction(JtaTransactionPolicy.java:338)
        ... 11 more
Caused by: javax.transaction.RollbackException: Unable to commit:
transaction marked for rollback
        at org.apache.geronimo.transaction.manager.TransactionImpl.commit(TransactionImpl.java:272)
        at org.apache.geronimo.transaction.manager.TransactionManagerImpl.commit(TransactionManagerImpl.java:252)
        at org.apache.openejb.core.transaction.JtaTransactionPolicy.completeTransaction(JtaTransactionPolicy.java:331)
        ... 11 more
Caused by: java.lang.Exception: Transaction has timed out
        at org.apache.geronimo.transaction.manager.TransactionImpl.commit(TransactionImpl.java:266)
        ... 13 more

Re: Exception while inserting in @Asynchronous

Posted by sa...@laposte.net.
Hello Radhakrishna, 

i had the same problem with DB2 and 2 scheduled jobs. 


one was selecting and the other one was updating. 

we fixed the issue with an uncommited read (WITH UR) option on the select query 



"Select * from A where id = x WITH UR" 

Salim 

----- Mail original -----

De: "Andy Gumbrecht" <ag...@tomitribe.com> 
À: dev@tomee.apache.org 
Envoyé: Vendredi 19 Décembre 2014 13:01:42 
Objet: Re: Exception while inserting in @Asynchronous 

Hi Radhakrishna, 

This is something to do with a deadlock on the DB2 table that your query 
is trying to execute. 

You will need to use the DB2 tools find the root cause of the deadlock 
at the time this error occurs - Just google 'DB2 Deadlock' and see if 
you can tune the table (flagging it as volatile may help). 

Things like this happen when several processes are trying to get a lock 
on the table at the same time - Check to see if you have other processes 
that may be using this table. 

Andy. 

On 19/12/2014 11:35, Radhakrishna Kalyan wrote: 
> Hi, 
> 
> We have deployed our application for the first time in our Production env 
> yesterday, and we got the following exception. 
> 
> We have Asynchronous schedule job running every day at a given time say 
> 14.00. 
> The method performs a query operation on a Transaction table and create a 
> text file with those transactions found for a given criteria. 
> After creating the text file the method also create an entry in another 
> table called Batch table identifying which batch files have been created. 
> 
> Also a rest interface is exposed to search the Batch table and list out the 
> entries and find out which batch files are created. 
> 
> 
> Here is the exception log stacktrace 
> 
> 
> dec 18, 2014 2:20:13 EM 
> org.apache.openejb.core.transaction.EjbTransactionUtil 
> handleSystemException 
> SEVERE: EjbTransactionUtil.handleSystemException: The transaction has 
> been marked rollback only because the bean encountered a 
> non-application exception 
> :org.hibernate.exception.LockAcquisitionException : could not execute 
> query 
> javax.ejb.EJBTransactionRolledbackException: The transaction has been 
> marked rollback only because the bean encountered a non-application 
> exception :org.hibernate.exception.LockAcquisitionException : could 
> not execute query 
> at org.apache.openejb.core.ivm.BaseEjbProxyHandler.convertException(BaseEjbProxyHandler.java:381) 
> at org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:312) 
> at com.netgiro.centralizedbatch.db.dao.BatchOrderDao$$LocalBeanProxy.getCount(com/netgiro/centralizedbatch/db/dao/BatchOrderDao.java) 
> at com.netgiro.centralizedbatch.rest.resources.BatchOrdersResource.searchBatchOrders(BatchOrdersResource.java:163) 
> at sun.reflect.GeneratedMethodAccessor46.invoke(Unknown Source) 
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
> at java.lang.reflect.Method.invoke(Method.java:606) 
> at org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:192) 
> at org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:173) 
> at com.netgiro.centralizedbatch.interceptors.AuditLogInterceptor.aroundInvoke(AuditLogInterceptor.java:22) 
> at sun.reflect.GeneratedMethodAccessor22.invoke(Unknown Source) 
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
> at java.lang.reflect.Method.invoke(Method.java:606) 
> at org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:192) 
> at org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:173) 
> at org.apache.openejb.monitoring.StatsInterceptor.record(StatsInterceptor.java:181) 
> at org.apache.openejb.monitoring.StatsInterceptor.invoke(StatsInterceptor.java:100) 
> at sun.reflect.GeneratedMethodAccessor21.invoke(Unknown Source) 
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
> at java.lang.reflect.Method.invoke(Method.java:606) 
> at org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:192) 
> at org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:173) 
> at org.apache.openejb.core.interceptor.InterceptorStack.invoke(InterceptorStack.java:85) 
> at org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:227) 
> at org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:194) 
> at org.apache.openejb.util.proxy.ProxyEJB$Handler.invoke(ProxyEJB.java:74) 
> at com.netgiro.centralizedbatch.rest.resources.BatchOrdersResource$$LocalBeanProxy.searchBatchOrders(com/netgiro/centralizedbatch/rest/resources/BatchOrdersResource.java) 
> at sun.reflect.GeneratedMethodAccessor45.invoke(Unknown Source) 
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
> at java.lang.reflect.Method.invoke(Method.java:606) 
> at org.apache.openejb.server.cxf.rs.OpenEJBEJBInvoker.performInvocation(OpenEJBEJBInvoker.java:89) 
> at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:104) 
> at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:205) 
> at org.apache.openejb.server.cxf.rs.OpenEJBEJBInvoker.invoke(OpenEJBEJBInvoker.java:62) 
> at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:102) 
> at org.apache.openejb.server.cxf.rs.AutoJAXRSInvoker.invoke(AutoJAXRSInvoker.java:64) 
> at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58) 
> at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:94) 
> at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:272) 
> at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121) 
> at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:239) 
> at org.apache.openejb.server.cxf.rs.CxfRsHttpListener.onMessage(CxfRsHttpListener.java:187) 
> at org.apache.openejb.server.httpd.OpenEJBHttpRegistry$ClassLoaderHttpListener.onMessage(OpenEJBHttpRegistry.java:111) 
> at org.apache.openejb.server.httpd.HttpListenerRegistry.onMessage(HttpListenerRegistry.java:71) 
> at org.apache.openejb.server.httpd.OpenEJBHttpServer.process(OpenEJBHttpServer.java:261) 
> at org.apache.openejb.server.httpd.OpenEJBHttpServer.processRequest(OpenEJBHttpServer.java:194) 
> at org.apache.openejb.server.httpd.OpenEJBHttpServer.service(OpenEJBHttpServer.java:109) 
> at org.apache.openejb.server.httpd.HttpEjbServer.service(HttpEjbServer.java:63) 
> at org.apache.openejb.server.ServerServiceFilter.service(ServerServiceFilter.java:65) 
> at org.apache.openejb.server.ServerServiceFilter.service(ServerServiceFilter.java:65) 
> at org.apache.openejb.server.ServiceStats.service(ServiceStats.java:54) 
> at org.apache.openejb.server.ServerServiceFilter.service(ServerServiceFilter.java:65) 
> at org.apache.openejb.server.ServiceLogger.service(ServiceLogger.java:93) 
> at org.apache.openejb.server.ServerServiceFilter.service(ServerServiceFilter.java:65) 
> at org.apache.openejb.server.ServicePool.access$201(ServicePool.java:39) 
> at org.apache.openejb.server.ServicePool$3.run(ServicePool.java:198) 
> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
> at java.lang.Thread.run(Thread.java:744) 
> Caused by: org.hibernate.exception.LockAcquisitionException: could not 
> execute query 
> at org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:94) 
> at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49) 
> at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125) 
> at org.hibernate.loader.Loader.doList(Loader.java:2551) 
> at org.hibernate.loader.Loader.doList(Loader.java:2534) 
> at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2364) 
> at org.hibernate.loader.Loader.list(Loader.java:2359) 
> at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:124) 
> at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1587) 
> at org.hibernate.internal.CriteriaImpl.list(CriteriaImpl.java:374) 
> at org.hibernate.internal.CriteriaImpl.uniqueResult(CriteriaImpl.java:396) 
> at com.netgiro.centralizedbatch.db.dao.BatchOrderDao.getCount(BatchOrderDao.java:223) 
> at sun.reflect.GeneratedMethodAccessor47.invoke(Unknown Source) 
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
> at java.lang.reflect.Method.invoke(Method.java:606) 
> at org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:192) 
> at org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:173) 
> at com.netgiro.centralizedbatch.interceptors.AuditLogInterceptor.aroundInvoke(AuditLogInterceptor.java:22) 
> at sun.reflect.GeneratedMethodAccessor22.invoke(Unknown Source) 
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
> at java.lang.reflect.Method.invoke(Method.java:606) 
> at org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:192) 
> at org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:173) 
> at org.apache.openejb.monitoring.StatsInterceptor.record(StatsInterceptor.java:181) 
> at org.apache.openejb.monitoring.StatsInterceptor.invoke(StatsInterceptor.java:100) 
> at sun.reflect.GeneratedMethodAccessor21.invoke(Unknown Source) 
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
> at java.lang.reflect.Method.invoke(Method.java:606) 
> at org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:192) 
> at org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:173) 
> at org.apache.openejb.core.interceptor.InterceptorStack.invoke(InterceptorStack.java:85) 
> at org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:227) 
> at org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:194) 
> at org.apache.openejb.core.ivm.EjbObjectProxyHandler.synchronizedBusinessMethod(EjbObjectProxyHandler.java:308) 
> at org.apache.openejb.core.ivm.EjbObjectProxyHandler.businessMethod(EjbObjectProxyHandler.java:303) 
> at org.apache.openejb.core.ivm.EjbObjectProxyHandler._invoke(EjbObjectProxyHandler.java:92) 
> at org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:308) 
> ... 57 more 
> Caused by: com.ibm.db2.jcc.am.po: DB2 SQL Error: SQLCODE=-911, 
> SQLSTATE=40001, SQLERRMC=68, DRIVER=4.7.112 
> at com.ibm.db2.jcc.am.dd.a(dd.java:663) 
> at com.ibm.db2.jcc.am.dd.a(dd.java:60) 
> at com.ibm.db2.jcc.am.dd.a(dd.java:127) 
> at com.ibm.db2.jcc.am.dm.b(dm.java:3751) 
> at com.ibm.db2.jcc.t4.eb.h(eb.java:278) 
> at com.ibm.db2.jcc.t4.eb.a(eb.java:239) 
> at com.ibm.db2.jcc.t4.eb.c(eb.java:31) 
> at com.ibm.db2.jcc.t4.u.a(u.java:32) 
> at com.ibm.db2.jcc.t4.j.Zb(j.java:259) 
> at com.ibm.db2.jcc.am.dm.X(dm.java:3544) 
> at com.ibm.db2.jcc.t4.d.f(d.java:1891) 
> at com.ibm.db2.jcc.am.ic.a(ic.java:201) 
> at com.ibm.db2.jcc.t4.d.a(d.java:109) 
> at com.ibm.db2.jcc.am.dm.c(dm.java:367) 
> at com.ibm.db2.jcc.am.dm.next(dm.java:294) 
> at org.apache.commons.dbcp.DelegatingResultSet.next(DelegatingResultSet.java:207) 
> at org.apache.commons.dbcp.DelegatingResultSet.next(DelegatingResultSet.java:207) 
> at org.hibernate.loader.Loader.processResultSet(Loader.java:946) 
> at org.hibernate.loader.Loader.doQuery(Loader.java:917) 
> at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:348) 
> at org.hibernate.loader.Loader.doList(Loader.java:2548) 
> ... 90 more 
> 
> dec 18, 2014 2:21:12 EM org.apache.openejb.core.ivm.EjbObjectProxyHandler$1 call 
> SEVERE: EjbObjectProxyHandler: Asynchronous call to 
> 'BatchJobSchedulerService' on 'scheduleBatchOrder' failed 
> org.apache.openejb.ApplicationException: 
> org.apache.openejb.core.transaction.TransactionRolledbackException: 
> Transaction was rolled back, presumably because setRollbackOnly was 
> called during a synchronization: Transaction was rolled back, 
> presumably because setRollbackOnly was called during a synchronization 
> at org.apache.openejb.core.transaction.JtaTransactionPolicy.completeTransaction(JtaTransactionPolicy.java:339) 
> at org.apache.openejb.core.transaction.TxRequired.commit(TxRequired.java:76) 
> at org.apache.openejb.core.transaction.EjbTransactionUtil.afterInvoke(EjbTransactionUtil.java:77) 
> at org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:246) 
> at org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:194) 
> at org.apache.openejb.core.ivm.EjbObjectProxyHandler.synchronizedBusinessMethod(EjbObjectProxyHandler.java:308) 
> at org.apache.openejb.core.ivm.EjbObjectProxyHandler$1.call(EjbObjectProxyHandler.java:284) 
> at org.apache.openejb.async.AsynchronousPool$AsynchronousCall.call(AsynchronousPool.java:111) 
> at java.util.concurrent.FutureTask.run(FutureTask.java:262) 
> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
> at java.lang.Thread.run(Thread.java:744) 
> Caused by: org.apache.openejb.core.transaction.TransactionRolledbackException: 
> Transaction was rolled back, presumably because setRollbackOnly was 
> called during a synchronization 
> at org.apache.openejb.core.transaction.JtaTransactionPolicy.completeTransaction(JtaTransactionPolicy.java:338) 
> ... 11 more 
> Caused by: javax.transaction.RollbackException: Unable to commit: 
> transaction marked for rollback 
> at org.apache.geronimo.transaction.manager.TransactionImpl.commit(TransactionImpl.java:272) 
> at org.apache.geronimo.transaction.manager.TransactionManagerImpl.commit(TransactionManagerImpl.java:252) 
> at org.apache.openejb.core.transaction.JtaTransactionPolicy.completeTransaction(JtaTransactionPolicy.java:331) 
> ... 11 more 
> Caused by: java.lang.Exception: Transaction has timed out 
> at org.apache.geronimo.transaction.manager.TransactionImpl.commit(TransactionImpl.java:266) 
> ... 13 more 
> 

-- 
Andy Gumbrecht 
https://twitter.com/AndyGeeDe 
http://www.tomitribe.com 



Re: Exception while inserting in @Asynchronous

Posted by Radhakrishna Kalyan <nr...@gmail.com>.
Hi,

I don't think the main issue is DB2. Using "With UR" may solve the issue of
locking on table but the main problem is exception occured in thread 1
caused tranasaction in thread 2 to rollback.

I am suspecting the following.

14.00 The Async schedule job which is BeanManaged started Transaction1
using userTransaction.begin().

14:09 The REST call tried to fetch data from Batch table(Synchronous call)
(Containter managed txn), but end up with LockAcquisitionException which
marked setRollbackOnly to true.

14:21 The Async schedule job tried to commit after creating the Batch file
but eventually got rollbacked by the container with the exception
org.apache.openejb.core.transaction.TransactionRolledbackException:
            Transaction was rolled back, presumably because setRollbackOnly
was called during a synchronization


Both method calls which started at 14.00 and 14.09 executed in 2 different
independent threads first call is BeanManaged and Rest call is
ContainerManaged.

I am suspecting that the exception occured at 14.09 is the root cause of
the rollback of the schedule job transaction.
But if it is true then I think its wrong as both calls are executed in 2
independent threads and an exception occured in one thread should not cause
other thread transaction to rollback.

Hope my analysis make sense.

Regards
Kalyan.



On Fri, Dec 19, 2014 at 1:01 PM, Andy Gumbrecht <ag...@tomitribe.com>
wrote:
>
> Hi Radhakrishna,
>
> This is something to do with a deadlock on the DB2 table that your query
> is trying to execute.
>
> You will need to use the DB2 tools find the root cause of the deadlock at
> the time this error occurs - Just google 'DB2 Deadlock' and see if you can
> tune the table (flagging it as volatile may help).
>
> Things like this happen when several processes are trying to get a lock on
> the table at the same time - Check to see if you have other processes that
> may be using this table.
>
> Andy.
>
>
> On 19/12/2014 11:35, Radhakrishna Kalyan wrote:
>
>> Hi,
>>
>> We have deployed our application for the first time in our Production env
>> yesterday, and we got the following exception.
>>
>> We have Asynchronous schedule job running every day at a given time say
>> 14.00.
>> The method performs a query operation on a Transaction table and create a
>> text file with those transactions found for a given criteria.
>> After creating the text file the method also create an entry in another
>> table called Batch table identifying which batch files have been created.
>>
>> Also a rest interface is exposed to search the Batch table and list out
>> the
>> entries and find out which batch files are created.
>>
>>
>> Here is the exception log stacktrace
>>
>>
>> dec 18, 2014 2:20:13 EM
>> org.apache.openejb.core.transaction.EjbTransactionUtil
>> handleSystemException
>> SEVERE: EjbTransactionUtil.handleSystemException: The transaction has
>> been marked rollback only because the bean encountered a
>> non-application exception
>> :org.hibernate.exception.LockAcquisitionException : could not execute
>> query
>> javax.ejb.EJBTransactionRolledbackException: The transaction has been
>> marked rollback only because the bean encountered a non-application
>> exception :org.hibernate.exception.LockAcquisitionException : could
>> not execute query
>>          at org.apache.openejb.core.ivm.BaseEjbProxyHandler.
>> convertException(BaseEjbProxyHandler.java:381)
>>          at org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(
>> BaseEjbProxyHandler.java:312)
>>          at com.netgiro.centralizedbatch.db.dao.BatchOrderDao$$
>> LocalBeanProxy.getCount(com/netgiro/centralizedbatch/db/
>> dao/BatchOrderDao.java)
>>          at com.netgiro.centralizedbatch.rest.resources.
>> BatchOrdersResource.searchBatchOrders(BatchOrdersResource.java:163)
>>          at sun.reflect.GeneratedMethodAccessor46.invoke(Unknown Source)
>>          at sun.reflect.DelegatingMethodAccessorImpl.invoke(
>> DelegatingMethodAccessorImpl.java:43)
>>          at java.lang.reflect.Method.invoke(Method.java:606)
>>          at org.apache.openejb.core.interceptor.
>> ReflectionInvocationContext$Invocation.invoke(
>> ReflectionInvocationContext.java:192)
>>          at org.apache.openejb.core.interceptor.
>> ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:173)
>>          at com.netgiro.centralizedbatch.interceptors.
>> AuditLogInterceptor.aroundInvoke(AuditLogInterceptor.java:22)
>>          at sun.reflect.GeneratedMethodAccessor22.invoke(Unknown Source)
>>          at sun.reflect.DelegatingMethodAccessorImpl.invoke(
>> DelegatingMethodAccessorImpl.java:43)
>>          at java.lang.reflect.Method.invoke(Method.java:606)
>>          at org.apache.openejb.core.interceptor.
>> ReflectionInvocationContext$Invocation.invoke(
>> ReflectionInvocationContext.java:192)
>>          at org.apache.openejb.core.interceptor.
>> ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:173)
>>          at org.apache.openejb.monitoring.StatsInterceptor.record(
>> StatsInterceptor.java:181)
>>          at org.apache.openejb.monitoring.StatsInterceptor.invoke(
>> StatsInterceptor.java:100)
>>          at sun.reflect.GeneratedMethodAccessor21.invoke(Unknown Source)
>>          at sun.reflect.DelegatingMethodAccessorImpl.invoke(
>> DelegatingMethodAccessorImpl.java:43)
>>          at java.lang.reflect.Method.invoke(Method.java:606)
>>          at org.apache.openejb.core.interceptor.
>> ReflectionInvocationContext$Invocation.invoke(
>> ReflectionInvocationContext.java:192)
>>          at org.apache.openejb.core.interceptor.
>> ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:173)
>>          at org.apache.openejb.core.interceptor.InterceptorStack.
>> invoke(InterceptorStack.java:85)
>>          at org.apache.openejb.core.stateless.StatelessContainer._
>> invoke(StatelessContainer.java:227)
>>          at org.apache.openejb.core.stateless.StatelessContainer.
>> invoke(StatelessContainer.java:194)
>>          at org.apache.openejb.util.proxy.ProxyEJB$Handler.invoke(
>> ProxyEJB.java:74)
>>          at com.netgiro.centralizedbatch.rest.resources.
>> BatchOrdersResource$$LocalBeanProxy.searchBatchOrders(com/netgiro/
>> centralizedbatch/rest/resources/BatchOrdersResource.java)
>>          at sun.reflect.GeneratedMethodAccessor45.invoke(Unknown Source)
>>          at sun.reflect.DelegatingMethodAccessorImpl.invoke(
>> DelegatingMethodAccessorImpl.java:43)
>>          at java.lang.reflect.Method.invoke(Method.java:606)
>>          at org.apache.openejb.server.cxf.rs.OpenEJBEJBInvoker.
>> performInvocation(OpenEJBEJBInvoker.java:89)
>>          at org.apache.cxf.service.invoker.AbstractInvoker.
>> invoke(AbstractInvoker.java:104)
>>          at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(
>> JAXRSInvoker.java:205)
>>          at org.apache.openejb.server.cxf.rs.OpenEJBEJBInvoker.invoke(
>> OpenEJBEJBInvoker.java:62)
>>          at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(
>> JAXRSInvoker.java:102)
>>          at org.apache.openejb.server.cxf.rs.AutoJAXRSInvoker.invoke(
>> AutoJAXRSInvoker.java:64)
>>          at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.
>> run(ServiceInvokerInterceptor.java:58)
>>          at org.apache.cxf.interceptor.ServiceInvokerInterceptor.
>> handleMessage(ServiceInvokerInterceptor.java:94)
>>          at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(
>> PhaseInterceptorChain.java:272)
>>          at org.apache.cxf.transport.ChainInitiationObserver.onMessage(
>> ChainInitiationObserver.java:121)
>>          at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(
>> AbstractHTTPDestination.java:239)
>>          at org.apache.openejb.server.cxf.rs.CxfRsHttpListener.
>> onMessage(CxfRsHttpListener.java:187)
>>          at org.apache.openejb.server.httpd.OpenEJBHttpRegistry$
>> ClassLoaderHttpListener.onMessage(OpenEJBHttpRegistry.java:111)
>>          at org.apache.openejb.server.httpd.HttpListenerRegistry.
>> onMessage(HttpListenerRegistry.java:71)
>>          at org.apache.openejb.server.httpd.OpenEJBHttpServer.
>> process(OpenEJBHttpServer.java:261)
>>          at org.apache.openejb.server.httpd.OpenEJBHttpServer.
>> processRequest(OpenEJBHttpServer.java:194)
>>          at org.apache.openejb.server.httpd.OpenEJBHttpServer.
>> service(OpenEJBHttpServer.java:109)
>>          at org.apache.openejb.server.httpd.HttpEjbServer.service(
>> HttpEjbServer.java:63)
>>          at org.apache.openejb.server.ServerServiceFilter.service(
>> ServerServiceFilter.java:65)
>>          at org.apache.openejb.server.ServerServiceFilter.service(
>> ServerServiceFilter.java:65)
>>          at org.apache.openejb.server.ServiceStats.service(
>> ServiceStats.java:54)
>>          at org.apache.openejb.server.ServerServiceFilter.service(
>> ServerServiceFilter.java:65)
>>          at org.apache.openejb.server.ServiceLogger.service(
>> ServiceLogger.java:93)
>>          at org.apache.openejb.server.ServerServiceFilter.service(
>> ServerServiceFilter.java:65)
>>          at org.apache.openejb.server.ServicePool.access$201(
>> ServicePool.java:39)
>>          at org.apache.openejb.server.ServicePool$3.run(ServicePool.
>> java:198)
>>          at java.util.concurrent.ThreadPoolExecutor.runWorker(
>> ThreadPoolExecutor.java:1145)
>>          at java.util.concurrent.ThreadPoolExecutor$Worker.run(
>> ThreadPoolExecutor.java:615)
>>          at java.lang.Thread.run(Thread.java:744)
>> Caused by: org.hibernate.exception.LockAcquisitionException: could not
>> execute query
>>          at org.hibernate.exception.internal.SQLExceptionTypeDelegate.
>> convert(SQLExceptionTypeDelegate.java:94)
>>          at org.hibernate.exception.internal.
>> StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.
>> java:49)
>>          at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(
>> SqlExceptionHelper.java:125)
>>          at org.hibernate.loader.Loader.doList(Loader.java:2551)
>>          at org.hibernate.loader.Loader.doList(Loader.java:2534)
>>          at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.
>> java:2364)
>>          at org.hibernate.loader.Loader.list(Loader.java:2359)
>>          at org.hibernate.loader.criteria.CriteriaLoader.list(
>> CriteriaLoader.java:124)
>>          at org.hibernate.internal.SessionImpl.list(SessionImpl.
>> java:1587)
>>          at org.hibernate.internal.CriteriaImpl.list(
>> CriteriaImpl.java:374)
>>          at org.hibernate.internal.CriteriaImpl.uniqueResult(
>> CriteriaImpl.java:396)
>>          at com.netgiro.centralizedbatch.db.dao.BatchOrderDao.getCount(
>> BatchOrderDao.java:223)
>>          at sun.reflect.GeneratedMethodAccessor47.invoke(Unknown Source)
>>          at sun.reflect.DelegatingMethodAccessorImpl.invoke(
>> DelegatingMethodAccessorImpl.java:43)
>>          at java.lang.reflect.Method.invoke(Method.java:606)
>>          at org.apache.openejb.core.interceptor.
>> ReflectionInvocationContext$Invocation.invoke(
>> ReflectionInvocationContext.java:192)
>>          at org.apache.openejb.core.interceptor.
>> ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:173)
>>          at com.netgiro.centralizedbatch.interceptors.
>> AuditLogInterceptor.aroundInvoke(AuditLogInterceptor.java:22)
>>          at sun.reflect.GeneratedMethodAccessor22.invoke(Unknown Source)
>>          at sun.reflect.DelegatingMethodAccessorImpl.invoke(
>> DelegatingMethodAccessorImpl.java:43)
>>          at java.lang.reflect.Method.invoke(Method.java:606)
>>          at org.apache.openejb.core.interceptor.
>> ReflectionInvocationContext$Invocation.invoke(
>> ReflectionInvocationContext.java:192)
>>          at org.apache.openejb.core.interceptor.
>> ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:173)
>>          at org.apache.openejb.monitoring.StatsInterceptor.record(
>> StatsInterceptor.java:181)
>>          at org.apache.openejb.monitoring.StatsInterceptor.invoke(
>> StatsInterceptor.java:100)
>>          at sun.reflect.GeneratedMethodAccessor21.invoke(Unknown Source)
>>          at sun.reflect.DelegatingMethodAccessorImpl.invoke(
>> DelegatingMethodAccessorImpl.java:43)
>>          at java.lang.reflect.Method.invoke(Method.java:606)
>>          at org.apache.openejb.core.interceptor.
>> ReflectionInvocationContext$Invocation.invoke(
>> ReflectionInvocationContext.java:192)
>>          at org.apache.openejb.core.interceptor.
>> ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:173)
>>          at org.apache.openejb.core.interceptor.InterceptorStack.
>> invoke(InterceptorStack.java:85)
>>          at org.apache.openejb.core.stateless.StatelessContainer._
>> invoke(StatelessContainer.java:227)
>>          at org.apache.openejb.core.stateless.StatelessContainer.
>> invoke(StatelessContainer.java:194)
>>          at org.apache.openejb.core.ivm.EjbObjectProxyHandler.
>> synchronizedBusinessMethod(EjbObjectProxyHandler.java:308)
>>          at org.apache.openejb.core.ivm.EjbObjectProxyHandler.
>> businessMethod(EjbObjectProxyHandler.java:303)
>>          at org.apache.openejb.core.ivm.EjbObjectProxyHandler._invoke(
>> EjbObjectProxyHandler.java:92)
>>          at org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(
>> BaseEjbProxyHandler.java:308)
>>          ... 57 more
>> Caused by: com.ibm.db2.jcc.am.po: DB2 SQL Error: SQLCODE=-911,
>> SQLSTATE=40001, SQLERRMC=68, DRIVER=4.7.112
>>          at com.ibm.db2.jcc.am.dd.a(dd.java:663)
>>          at com.ibm.db2.jcc.am.dd.a(dd.java:60)
>>          at com.ibm.db2.jcc.am.dd.a(dd.java:127)
>>          at com.ibm.db2.jcc.am.dm.b(dm.java:3751)
>>          at com.ibm.db2.jcc.t4.eb.h(eb.java:278)
>>          at com.ibm.db2.jcc.t4.eb.a(eb.java:239)
>>          at com.ibm.db2.jcc.t4.eb.c(eb.java:31)
>>          at com.ibm.db2.jcc.t4.u.a(u.java:32)
>>          at com.ibm.db2.jcc.t4.j.Zb(j.java:259)
>>          at com.ibm.db2.jcc.am.dm.X(dm.java:3544)
>>          at com.ibm.db2.jcc.t4.d.f(d.java:1891)
>>          at com.ibm.db2.jcc.am.ic.a(ic.java:201)
>>          at com.ibm.db2.jcc.t4.d.a(d.java:109)
>>          at com.ibm.db2.jcc.am.dm.c(dm.java:367)
>>          at com.ibm.db2.jcc.am.dm.next(dm.java:294)
>>          at org.apache.commons.dbcp.DelegatingResultSet.next(
>> DelegatingResultSet.java:207)
>>          at org.apache.commons.dbcp.DelegatingResultSet.next(
>> DelegatingResultSet.java:207)
>>          at org.hibernate.loader.Loader.processResultSet(Loader.java:946)
>>          at org.hibernate.loader.Loader.doQuery(Loader.java:917)
>>          at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCol
>> lections(Loader.java:348)
>>          at org.hibernate.loader.Loader.doList(Loader.java:2548)
>>          ... 90 more
>>
>> dec 18, 2014 2:21:12 EM org.apache.openejb.core.ivm.EjbObjectProxyHandler$1
>> call
>> SEVERE: EjbObjectProxyHandler: Asynchronous call to
>> 'BatchJobSchedulerService' on 'scheduleBatchOrder' failed
>> org.apache.openejb.ApplicationException:
>> org.apache.openejb.core.transaction.TransactionRolledbackException:
>> Transaction was rolled back, presumably because setRollbackOnly was
>> called during a synchronization: Transaction was rolled back,
>> presumably because setRollbackOnly was called during a synchronization
>>          at org.apache.openejb.core.transaction.JtaTransactionPolicy.
>> completeTransaction(JtaTransactionPolicy.java:339)
>>          at org.apache.openejb.core.transaction.TxRequired.commit(
>> TxRequired.java:76)
>>          at org.apache.openejb.core.transaction.EjbTransactionUtil.
>> afterInvoke(EjbTransactionUtil.java:77)
>>          at org.apache.openejb.core.stateless.StatelessContainer._
>> invoke(StatelessContainer.java:246)
>>          at org.apache.openejb.core.stateless.StatelessContainer.
>> invoke(StatelessContainer.java:194)
>>          at org.apache.openejb.core.ivm.EjbObjectProxyHandler.
>> synchronizedBusinessMethod(EjbObjectProxyHandler.java:308)
>>          at org.apache.openejb.core.ivm.EjbObjectProxyHandler$1.call(
>> EjbObjectProxyHandler.java:284)
>>          at org.apache.openejb.async.AsynchronousPool$
>> AsynchronousCall.call(AsynchronousPool.java:111)
>>          at java.util.concurrent.FutureTask.run(FutureTask.java:262)
>>          at java.util.concurrent.ThreadPoolExecutor.runWorker(
>> ThreadPoolExecutor.java:1145)
>>          at java.util.concurrent.ThreadPoolExecutor$Worker.run(
>> ThreadPoolExecutor.java:615)
>>          at java.lang.Thread.run(Thread.java:744)
>> Caused by: org.apache.openejb.core.transaction.
>> TransactionRolledbackException:
>> Transaction was rolled back, presumably because setRollbackOnly was
>> called during a synchronization
>>          at org.apache.openejb.core.transaction.JtaTransactionPolicy.
>> completeTransaction(JtaTransactionPolicy.java:338)
>>          ... 11 more
>> Caused by: javax.transaction.RollbackException: Unable to commit:
>> transaction marked for rollback
>>          at org.apache.geronimo.transaction.manager.
>> TransactionImpl.commit(TransactionImpl.java:272)
>>          at org.apache.geronimo.transaction.manager.
>> TransactionManagerImpl.commit(TransactionManagerImpl.java:252)
>>          at org.apache.openejb.core.transaction.JtaTransactionPolicy.
>> completeTransaction(JtaTransactionPolicy.java:331)
>>          ... 11 more
>> Caused by: java.lang.Exception: Transaction has timed out
>>          at org.apache.geronimo.transaction.manager.
>> TransactionImpl.commit(TransactionImpl.java:266)
>>          ... 13 more
>>
>>
> --
>   Andy Gumbrecht
>   https://twitter.com/AndyGeeDe
>   http://www.tomitribe.com
>
>

-- 
Thanks and Regards
N Radhakrishna Kalyan

P:  +46 733 312 584
http://about.me/nrkkalyan
<http://about.me/nrkkalyan>

Re: Exception while inserting in @Asynchronous

Posted by Andy Gumbrecht <ag...@tomitribe.com>.
Hi Radhakrishna,

This is something to do with a deadlock on the DB2 table that your query 
is trying to execute.

You will need to use the DB2 tools find the root cause of the deadlock 
at the time this error occurs - Just google 'DB2 Deadlock' and see if 
you can tune the table (flagging it as volatile may help).

Things like this happen when several processes are trying to get a lock 
on the table at the same time - Check to see if you have other processes 
that may be using this table.

Andy.

On 19/12/2014 11:35, Radhakrishna Kalyan wrote:
> Hi,
>
> We have deployed our application for the first time in our Production env
> yesterday, and we got the following exception.
>
> We have Asynchronous schedule job running every day at a given time say
> 14.00.
> The method performs a query operation on a Transaction table and create a
> text file with those transactions found for a given criteria.
> After creating the text file the method also create an entry in another
> table called Batch table identifying which batch files have been created.
>
> Also a rest interface is exposed to search the Batch table and list out the
> entries and find out which batch files are created.
>
>
> Here is the exception log stacktrace
>
>
> dec 18, 2014 2:20:13 EM
> org.apache.openejb.core.transaction.EjbTransactionUtil
> handleSystemException
> SEVERE: EjbTransactionUtil.handleSystemException: The transaction has
> been marked rollback only because the bean encountered a
> non-application exception
> :org.hibernate.exception.LockAcquisitionException : could not execute
> query
> javax.ejb.EJBTransactionRolledbackException: The transaction has been
> marked rollback only because the bean encountered a non-application
> exception :org.hibernate.exception.LockAcquisitionException : could
> not execute query
>          at org.apache.openejb.core.ivm.BaseEjbProxyHandler.convertException(BaseEjbProxyHandler.java:381)
>          at org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:312)
>          at com.netgiro.centralizedbatch.db.dao.BatchOrderDao$$LocalBeanProxy.getCount(com/netgiro/centralizedbatch/db/dao/BatchOrderDao.java)
>          at com.netgiro.centralizedbatch.rest.resources.BatchOrdersResource.searchBatchOrders(BatchOrdersResource.java:163)
>          at sun.reflect.GeneratedMethodAccessor46.invoke(Unknown Source)
>          at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>          at java.lang.reflect.Method.invoke(Method.java:606)
>          at org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:192)
>          at org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:173)
>          at com.netgiro.centralizedbatch.interceptors.AuditLogInterceptor.aroundInvoke(AuditLogInterceptor.java:22)
>          at sun.reflect.GeneratedMethodAccessor22.invoke(Unknown Source)
>          at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>          at java.lang.reflect.Method.invoke(Method.java:606)
>          at org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:192)
>          at org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:173)
>          at org.apache.openejb.monitoring.StatsInterceptor.record(StatsInterceptor.java:181)
>          at org.apache.openejb.monitoring.StatsInterceptor.invoke(StatsInterceptor.java:100)
>          at sun.reflect.GeneratedMethodAccessor21.invoke(Unknown Source)
>          at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>          at java.lang.reflect.Method.invoke(Method.java:606)
>          at org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:192)
>          at org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:173)
>          at org.apache.openejb.core.interceptor.InterceptorStack.invoke(InterceptorStack.java:85)
>          at org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:227)
>          at org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:194)
>          at org.apache.openejb.util.proxy.ProxyEJB$Handler.invoke(ProxyEJB.java:74)
>          at com.netgiro.centralizedbatch.rest.resources.BatchOrdersResource$$LocalBeanProxy.searchBatchOrders(com/netgiro/centralizedbatch/rest/resources/BatchOrdersResource.java)
>          at sun.reflect.GeneratedMethodAccessor45.invoke(Unknown Source)
>          at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>          at java.lang.reflect.Method.invoke(Method.java:606)
>          at org.apache.openejb.server.cxf.rs.OpenEJBEJBInvoker.performInvocation(OpenEJBEJBInvoker.java:89)
>          at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:104)
>          at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:205)
>          at org.apache.openejb.server.cxf.rs.OpenEJBEJBInvoker.invoke(OpenEJBEJBInvoker.java:62)
>          at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:102)
>          at org.apache.openejb.server.cxf.rs.AutoJAXRSInvoker.invoke(AutoJAXRSInvoker.java:64)
>          at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58)
>          at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:94)
>          at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:272)
>          at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
>          at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:239)
>          at org.apache.openejb.server.cxf.rs.CxfRsHttpListener.onMessage(CxfRsHttpListener.java:187)
>          at org.apache.openejb.server.httpd.OpenEJBHttpRegistry$ClassLoaderHttpListener.onMessage(OpenEJBHttpRegistry.java:111)
>          at org.apache.openejb.server.httpd.HttpListenerRegistry.onMessage(HttpListenerRegistry.java:71)
>          at org.apache.openejb.server.httpd.OpenEJBHttpServer.process(OpenEJBHttpServer.java:261)
>          at org.apache.openejb.server.httpd.OpenEJBHttpServer.processRequest(OpenEJBHttpServer.java:194)
>          at org.apache.openejb.server.httpd.OpenEJBHttpServer.service(OpenEJBHttpServer.java:109)
>          at org.apache.openejb.server.httpd.HttpEjbServer.service(HttpEjbServer.java:63)
>          at org.apache.openejb.server.ServerServiceFilter.service(ServerServiceFilter.java:65)
>          at org.apache.openejb.server.ServerServiceFilter.service(ServerServiceFilter.java:65)
>          at org.apache.openejb.server.ServiceStats.service(ServiceStats.java:54)
>          at org.apache.openejb.server.ServerServiceFilter.service(ServerServiceFilter.java:65)
>          at org.apache.openejb.server.ServiceLogger.service(ServiceLogger.java:93)
>          at org.apache.openejb.server.ServerServiceFilter.service(ServerServiceFilter.java:65)
>          at org.apache.openejb.server.ServicePool.access$201(ServicePool.java:39)
>          at org.apache.openejb.server.ServicePool$3.run(ServicePool.java:198)
>          at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>          at java.lang.Thread.run(Thread.java:744)
> Caused by: org.hibernate.exception.LockAcquisitionException: could not
> execute query
>          at org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:94)
>          at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49)
>          at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125)
>          at org.hibernate.loader.Loader.doList(Loader.java:2551)
>          at org.hibernate.loader.Loader.doList(Loader.java:2534)
>          at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2364)
>          at org.hibernate.loader.Loader.list(Loader.java:2359)
>          at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:124)
>          at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1587)
>          at org.hibernate.internal.CriteriaImpl.list(CriteriaImpl.java:374)
>          at org.hibernate.internal.CriteriaImpl.uniqueResult(CriteriaImpl.java:396)
>          at com.netgiro.centralizedbatch.db.dao.BatchOrderDao.getCount(BatchOrderDao.java:223)
>          at sun.reflect.GeneratedMethodAccessor47.invoke(Unknown Source)
>          at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>          at java.lang.reflect.Method.invoke(Method.java:606)
>          at org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:192)
>          at org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:173)
>          at com.netgiro.centralizedbatch.interceptors.AuditLogInterceptor.aroundInvoke(AuditLogInterceptor.java:22)
>          at sun.reflect.GeneratedMethodAccessor22.invoke(Unknown Source)
>          at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>          at java.lang.reflect.Method.invoke(Method.java:606)
>          at org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:192)
>          at org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:173)
>          at org.apache.openejb.monitoring.StatsInterceptor.record(StatsInterceptor.java:181)
>          at org.apache.openejb.monitoring.StatsInterceptor.invoke(StatsInterceptor.java:100)
>          at sun.reflect.GeneratedMethodAccessor21.invoke(Unknown Source)
>          at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>          at java.lang.reflect.Method.invoke(Method.java:606)
>          at org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:192)
>          at org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:173)
>          at org.apache.openejb.core.interceptor.InterceptorStack.invoke(InterceptorStack.java:85)
>          at org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:227)
>          at org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:194)
>          at org.apache.openejb.core.ivm.EjbObjectProxyHandler.synchronizedBusinessMethod(EjbObjectProxyHandler.java:308)
>          at org.apache.openejb.core.ivm.EjbObjectProxyHandler.businessMethod(EjbObjectProxyHandler.java:303)
>          at org.apache.openejb.core.ivm.EjbObjectProxyHandler._invoke(EjbObjectProxyHandler.java:92)
>          at org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:308)
>          ... 57 more
> Caused by: com.ibm.db2.jcc.am.po: DB2 SQL Error: SQLCODE=-911,
> SQLSTATE=40001, SQLERRMC=68, DRIVER=4.7.112
>          at com.ibm.db2.jcc.am.dd.a(dd.java:663)
>          at com.ibm.db2.jcc.am.dd.a(dd.java:60)
>          at com.ibm.db2.jcc.am.dd.a(dd.java:127)
>          at com.ibm.db2.jcc.am.dm.b(dm.java:3751)
>          at com.ibm.db2.jcc.t4.eb.h(eb.java:278)
>          at com.ibm.db2.jcc.t4.eb.a(eb.java:239)
>          at com.ibm.db2.jcc.t4.eb.c(eb.java:31)
>          at com.ibm.db2.jcc.t4.u.a(u.java:32)
>          at com.ibm.db2.jcc.t4.j.Zb(j.java:259)
>          at com.ibm.db2.jcc.am.dm.X(dm.java:3544)
>          at com.ibm.db2.jcc.t4.d.f(d.java:1891)
>          at com.ibm.db2.jcc.am.ic.a(ic.java:201)
>          at com.ibm.db2.jcc.t4.d.a(d.java:109)
>          at com.ibm.db2.jcc.am.dm.c(dm.java:367)
>          at com.ibm.db2.jcc.am.dm.next(dm.java:294)
>          at org.apache.commons.dbcp.DelegatingResultSet.next(DelegatingResultSet.java:207)
>          at org.apache.commons.dbcp.DelegatingResultSet.next(DelegatingResultSet.java:207)
>          at org.hibernate.loader.Loader.processResultSet(Loader.java:946)
>          at org.hibernate.loader.Loader.doQuery(Loader.java:917)
>          at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:348)
>          at org.hibernate.loader.Loader.doList(Loader.java:2548)
>          ... 90 more
>
> dec 18, 2014 2:21:12 EM org.apache.openejb.core.ivm.EjbObjectProxyHandler$1 call
> SEVERE: EjbObjectProxyHandler: Asynchronous call to
> 'BatchJobSchedulerService' on 'scheduleBatchOrder' failed
> org.apache.openejb.ApplicationException:
> org.apache.openejb.core.transaction.TransactionRolledbackException:
> Transaction was rolled back, presumably because setRollbackOnly was
> called during a synchronization: Transaction was rolled back,
> presumably because setRollbackOnly was called during a synchronization
>          at org.apache.openejb.core.transaction.JtaTransactionPolicy.completeTransaction(JtaTransactionPolicy.java:339)
>          at org.apache.openejb.core.transaction.TxRequired.commit(TxRequired.java:76)
>          at org.apache.openejb.core.transaction.EjbTransactionUtil.afterInvoke(EjbTransactionUtil.java:77)
>          at org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:246)
>          at org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:194)
>          at org.apache.openejb.core.ivm.EjbObjectProxyHandler.synchronizedBusinessMethod(EjbObjectProxyHandler.java:308)
>          at org.apache.openejb.core.ivm.EjbObjectProxyHandler$1.call(EjbObjectProxyHandler.java:284)
>          at org.apache.openejb.async.AsynchronousPool$AsynchronousCall.call(AsynchronousPool.java:111)
>          at java.util.concurrent.FutureTask.run(FutureTask.java:262)
>          at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>          at java.lang.Thread.run(Thread.java:744)
> Caused by: org.apache.openejb.core.transaction.TransactionRolledbackException:
> Transaction was rolled back, presumably because setRollbackOnly was
> called during a synchronization
>          at org.apache.openejb.core.transaction.JtaTransactionPolicy.completeTransaction(JtaTransactionPolicy.java:338)
>          ... 11 more
> Caused by: javax.transaction.RollbackException: Unable to commit:
> transaction marked for rollback
>          at org.apache.geronimo.transaction.manager.TransactionImpl.commit(TransactionImpl.java:272)
>          at org.apache.geronimo.transaction.manager.TransactionManagerImpl.commit(TransactionManagerImpl.java:252)
>          at org.apache.openejb.core.transaction.JtaTransactionPolicy.completeTransaction(JtaTransactionPolicy.java:331)
>          ... 11 more
> Caused by: java.lang.Exception: Transaction has timed out
>          at org.apache.geronimo.transaction.manager.TransactionImpl.commit(TransactionImpl.java:266)
>          ... 13 more
>

-- 
   Andy Gumbrecht
   https://twitter.com/AndyGeeDe
   http://www.tomitribe.com