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" <[email protected]> 
À: [email protected] 
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 


Reply via email to