Issue in JBoss data virtualization when performing big transactions

Posted on

Hi,

I am facing the issue when try to perform transaction in teiid.
Below is the snippet from stack trace.

org.hibernate.internal.SessionImpl$4.accept(SessionImpl.java:2159)
at org.hibernate.engine.jdbc.internal.JdbcCoordinatorImpl.coordinateWork(JdbcCoordinatorImpl.java:332)
at org.hibernate.internal.SessionImpl.doWork(SessionImpl.java:2166)
at org.hibernate.internal.SessionImpl.doReturningWork(SessionImpl.java:2162)
at com.imshealth.bdf.autocoding.bridge.dao.BaseDao$$anonfun$withConnection$1.apply(BaseDao.scala:44)
at com.imshealth.bdf.autocoding.bridge.dao.BaseDao$$anonfun$withConnection$1.apply(BaseDao.scala:39)
at com.imshealth.bdf.autocoding.bridge.dao.BaseDao$class.withEntityManager(BaseDao.scala:22)
... 15 common frames omitted
Caused by: org.teiid.jdbc.TeiidSQLException: org.teiid.client.xa.XATransactionException: TEIID30530 javax.transaction.RollbackException: ARJUNA016102: The transaction is not active! Uid is 0:ffffa22c73d5:6a02c24e:575182cd:85b0
at org.teiid.jdbc.TeiidSQLException.create(TeiidSQLException.java:135)
at org.teiid.jdbc.TeiidSQLException.create(TeiidSQLException.java:71)
at org.teiid.jdbc.ConnectionImpl.directCommit(ConnectionImpl.java:349)
at org.teiid.jdbc.ConnectionImpl.commit(ConnectionImpl.java:336)
at com.imshealth.bdf.autocoding.bridge.dao.JpaRepository$$anonfun$inTransaction$1$$anonfun$apply$4.apply(JpaRepository.scala:85)
at com.imshealth.bdf.autocoding.bridge.dao.JpaRepository$$anonfun$inTransaction$1$$anonfun$apply$4.apply(JpaRepository.scala:72)
at scala.collection.Iterator$class.foreach(Iterator.scala:742)
at scala.collection.AbstractIterator.foreach(Iterator.scala:1194)
at com.imshealth.bdf.autocoding.bridge.dao.JpaRepository$$anonfun$inTransaction$1.apply(JpaRepository.scala:72)
... 25 common frames omitted
Caused by: java.util.concurrent.ExecutionException: org.teiid.client.xa.XATransactionException: TEIID30530 javax.transaction.RollbackException: ARJUNA016102: The transaction is not active! Uid is 0:ffffa22c73d5:6a02c24e:575182cd:85b0
at org.teiid.net.socket.SocketServerInstanceImpl$RemoteInvocationHandler$1.convertResult(SocketServerInstanceImpl.java:373)
at org.teiid.client.util.ResultsFuture.get(ResultsFuture.java:120)
at org.teiid.net.socket.SocketServerInstanceImpl$RemoteInvocationHandler$1.get(SocketServerInstanceImpl.java:402)
at org.teiid.net.socket.SocketServerInstanceImpl$RemoteInvocationHandler$1.get(SocketServerInstanceImpl.java:387)
at org.teiid.jdbc.ConnectionImpl.directCommit(ConnectionImpl.java:347)
... 31 common frames omitted
Caused by: org.teiid.client.xa.XATransactionException: TEIID30530 javax.transaction.RollbackException: ARJUNA016102: The transaction is not active! Uid is 0:ffffa22c73d5:6a02c24e:575182cd:85b0
at org.teiid.dqp.internal.process.TransactionServerImpl.commitDirect(TransactionServerImpl.java:415)
at org.teiid.dqp.internal.process.TransactionServerImpl.commit(TransactionServerImpl.java:484)
at sun.reflect.GeneratedMethodAccessor275.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.teiid.logging.LogManager$LoggingProxy.invoke(LogManager.java:121)
at com.sun.proxy.$Proxy31.commit(Unknown Source)
at org.teiid.dqp.internal.process.DQPCore$3.call(DQPCore.java:681)
at org.teiid.dqp.internal.process.DQPCore$3.call(DQPCore.java:678)
at org.teiid.dqp.internal.process.DQPCore$7.run(DQPCore.java:746)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at org.teiid.dqp.internal.process.FutureWork.run(FutureWork.java:58)
at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:274)
at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:119)
at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:210)
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:745)
Caused by: javax.transaction.RollbackException: ARJUNA016102: The transaction is not active! Uid is 0:ffffa22c73d5:6a02c24e:575182cd:85b0
at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1179)
at com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.commit(BaseTransaction.java:126)
at com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.commit(BaseTransactionManagerDelegate.java:75)
at org.teiid.dqp.internal.process.TransactionServerImpl.commitDirect(TransactionServerImpl.java:411)
... 18 common frames omitted

Exception is "transaction not active". I am updating records in loop and after updating 23k records exception is coming. I believe transaction is getting timeout. Now the question is what are the different ways to increase the timeout? Few I know:
1-Increase in jdv server configuration xml
2-increase particular vdb timeout

Which option should I use to increase timeout? Also I saw option to set transaction timeout when configuring a data source in jdv console under "configuration" option. What does it do??

Also the performance is become very slow, any idea on that also? How to improve?

Any help will be appreciated.

Thanks,
Aniket

Responses