[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [eclipselink-users] inactiveUnitOfWork with OptimisticLockException
|
Hi,
I am using JPA.
When I throw a runtime exception manually I don't see this problem.
I am using Spring to control the transaction, so it is doing the commit.
Here is my persistence.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="test" transaction-type="JTA">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<!-- For some reason EclipseLink does not recognize this datassource.
It was necessary to add a property with name
"javax.persistence.jtaDataSource" at the end of this file.
<jta-data-source>java:comp/env/jdbc/testDs</jta-data-source>
-->
<class>com.test.TestClassA</class>
<class>com.test.TestClassB</class>
<validation-mode>CALLBACK</validation-mode>
<properties>
<property name="eclipselink.target-server" value="Weblogic"/>
<property name="eclipselink.weaving" value="static"/>
<property name="eclipselink.weaving.lazy" value="true"/>
<property name="eclipselink.jdbc.batch-writing" value="JDBC" />
<property name="eclipselink.persistence-context.flush-mode" value="COMMIT" />
<property name="eclipselink.cache.size.default" value="1000" />
<property name="eclipselink.cache.coordination.protocol" value="rmi" />
<property name="javax.persistence.jtaDataSource"
value="java:comp/env/jdbc/testDs"/>
<property name="javax.persistence.query.timeout" value="120"/>
</properties>
</persistence-unit>
</persistence>
The two stack traces I get are:
from weblogic:
####<01-Dec-2010 16:44:33 o'clock BRST> <Warning> <JTA> <SPMADLT0374> <AdminServer> <[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'> <<anonymous>> <> <> <1291229073404> <BEA-110401> <Ignoring error in afterCompletion. Object=org.eclipse.persistence.transaction.JTASynchronizationListener@99eb16<mailto:Object=org.eclipse.persistence.transaction.JTASynchronizationListener@99eb16>, Exception=Exception [EclipseLink-23011] (Eclipse Persistence Services - 2.2.0.v20101117-r8503): org.eclipse.persistence.exceptions.TransactionException
Exception Description: Error trying to format exception message: UnitOfWork [{0}] was rendered inactive before associated externally managed transaction was complete. The arguments are: [Exception [EclipseLink-4022] (Eclipse Persistence Services - 2.2.0.v20101117-r8503): org.eclipse.persistence.exceptions.DatabaseException
Exception Description: Accessor or its connection has been set to null. This can occur if the ClientSession or UnitOfWork was released in a seperate thread, for instance if a Timeout occurred.]
Exception [EclipseLink-23011] (Eclipse Persistence Services - 2.2.0.v20101117-r8503): org.eclipse.persistence.exceptions.TransactionException
Exception Description: Error trying to format exception message: UnitOfWork [{0}] was rendered inactive before associated externally managed transaction was complete. The arguments are: [Exception [EclipseLink-4022] (Eclipse Persistence Services - 2.2.0.v20101117-r8503): org.eclipse.persistence.exceptions.DatabaseException
Exception Description: Accessor or its connection has been set to null. This can occur if the ClientSession or UnitOfWork was released in a seperate thread, for instance if a Timeout occurred.]
at org.eclipse.persistence.exceptions.TransactionException.inactiveUnitOfWork(TransactionException.java:118)
at org.eclipse.persistence.transaction.AbstractSynchronizationListener.afterCompletion(AbstractSynchronizationListener.java:203)
at org.eclipse.persistence.transaction.JTASynchronizationListener.afterCompletion(JTASynchronizationListener.java:79)
at weblogic.transaction.internal.ServerSCInfo.doAfterCompletion(ServerSCInfo.java:1023)
at weblogic.transaction.internal.ServerSCInfo.callAfterCompletions(ServerSCInfo.java:999)
at weblogic.transaction.internal.ServerTransactionImpl.callAfterCompletions(ServerTransactionImpl.java:2996)
at weblogic.transaction.internal.ServerTransactionImpl.afterRolledBackStateHousekeeping(ServerTransactionImpl.java:2877)
at weblogic.transaction.internal.ServerTransactionImpl.setRolledBack(ServerTransactionImpl.java:2853)
at weblogic.transaction.internal.ServerTransactionImpl.globalRetryRollback(ServerTransactionImpl.java:3093)
at weblogic.transaction.internal.ServerTransactionImpl.globalRollback(ServerTransactionImpl.java:2843)
at weblogic.transaction.internal.ServerTransactionImpl.internalCommit(ServerTransactionImpl.java:328)
at weblogic.transaction.internal.ServerTransactionImpl.commit(ServerTransactionImpl.java:224)
at weblogic.transaction.internal.TransactionManagerImpl.commit(TransactionManagerImpl.java:292)
at org.springframework.transaction.jta.JtaTransactionManager.doCommit(JtaTransactionManager.java:1009)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:754)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:723)
at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:375)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:120)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
at $Proxy193.updateType(Unknown Source)
from application:
org.springframework.transaction.UnexpectedRollbackException: JTA transaction unexpectedly rolled back (maybe due to a timeout); nested exception is weblogic.transaction.RollbackException: Unexpected exception in beforeCompletion: sync=org.eclipse.persistence.transaction.JTASynchronizationListener@99eb16<mailto:sync=org.eclipse.persistence.transaction.JTASynchronizationListener@99eb16>
Exception Description: One or more objects cannot be updated because it has changed or been deleted since it was last read
at org.springframework.transaction.jta.JtaTransactionManager.doCommit(JtaTransactionManager.java:1012)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:754)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:723)
at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:375)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:120)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
at $Proxy193.updateType(Unknown Source)
...
Caused by: weblogic.transaction.RollbackException: Unexpected exception in beforeCompletion: sync=org.eclipse.persistence.transaction.JTASynchronizationListener@99eb16<mailto:sync=org.eclipse.persistence.transaction.JTASynchronizationListener@99eb16>
Exception Description: One or more objects cannot be updated because it has changed or been deleted since it was last read
at weblogic.transaction.internal.TransactionImpl.throwRollbackException(TransactionImpl.java:1871)
at weblogic.transaction.internal.ServerTransactionImpl.internalCommit(ServerTransactionImpl.java:330)
at weblogic.transaction.internal.ServerTransactionImpl.commit(ServerTransactionImpl.java:224)
at weblogic.transaction.internal.TransactionManagerImpl.commit(TransactionManagerImpl.java:292)
at org.springframework.transaction.jta.JtaTransactionManager.doCommit(JtaTransactionManager.java:1009)
... 61 more
Caused by: Exception [EclipseLink-5011] (Eclipse Persistence Services - 2.2.0.v20101117-r8503): org.eclipse.persistence.exceptions.OptimisticLockException
Exception Description: One or more objects cannot be updated because it has changed or been deleted since it was last read
at org.eclipse.persistence.exceptions.OptimisticLockException.batchStatementExecutionFailure(OptimisticLockException.java:79)
at org.eclipse.persistence.internal.databaseaccess.ParameterizedSQLBatchWritingMechanism.executeBatchedStatements(ParameterizedSQLBatchWritingMechanism.java:143)
at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.writesCompleted(DatabaseAccessor.java:1632)
at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.commitTransaction(DatabaseAccessor.java:399)
at org.eclipse.persistence.internal.sessions.AbstractSession.basicCommitTransaction(AbstractSession.java:506)
at org.eclipse.persistence.sessions.server.ClientSession.basicCommitTransaction(ClientSession.java:155)
at org.eclipse.persistence.internal.sessions.AbstractSession.commitTransaction(AbstractSession.java:688)
at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.commitTransaction(UnitOfWorkImpl.java:1585)
at org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.commitTransaction(RepeatableWriteUnitOfWork.java:629)
at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.commitTransactionAfterWriteChanges(UnitOfWorkImpl.java:1608)
at org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.issueSQLbeforeCompletion(RepeatableWriteUnitOfWork.java:339)
at org.eclipse.persistence.transaction.AbstractSynchronizationListener.beforeCompletion(AbstractSynchronizationListener.java:157)
at org.eclipse.persistence.transaction.JTASynchronizationListener.beforeCompletion(JTASynchronizationListener.java:68)
at weblogic.transaction.internal.ServerSCInfo.doBeforeCompletion(ServerSCInfo.java:1214)
at weblogic.transaction.internal.ServerSCInfo.callBeforeCompletions(ServerSCInfo.java:1189)
at weblogic.transaction.internal.ServerSCInfo.startPrePrepareAndChain(ServerSCInfo.java:109)
at weblogic.transaction.internal.ServerTransactionImpl.localPrePrepareAndChain(ServerTransactionImpl.java:1301)
at weblogic.transaction.internal.ServerTransactionImpl.globalPrePrepare(ServerTransactionImpl.java:2117)
at weblogic.transaction.internal.ServerTransactionImpl.internalCommit(ServerTransactionImpl.java:257)
... 64 more
Thanks a lot,
Constantino.
------------------------------
Message: 2
Date: Wed, 1 Dec 2010 06:29:06 -0800 (PST)
From: James Sutherland <jamesssss@xxxxxxxxx>
To: eclipselink-users@xxxxxxxxxxx
Subject: Re: [eclipselink-users] inactiveUnitOfWork with
OptimisticLockException
Message-ID: <30349424.post@xxxxxxxxxxxxxxx>
Content-Type: text/plain; charset=us-ascii
That is odd, it code mean you have JTA configured incorrectly. Are you using
JPA or native API? Include your persistence.xml, and how you commit the
transaction/unit of work.
Cronemberger, Constantino wrote:
>
> Hi,
>
> When I get an OptimisticLockException trying to commit a transaction I
> also get the following warning. Is this something I should wory about?
>
> ####<26-Nov-2010 15:15:39 o'clock BRST> <Warning> <JTA> <SPMADLT0374>
> <AdminServer> <[ACTIVE] ExecuteThread: '1' for queue:
> 'weblogic.kernel.Default (self-tuning)'> <<anonymous>> <> <>
> <1290791739182> <BEA-110401> <Ignoring error in afterCompletion.
> Object=<mailto:Object=org.eclipse.persistence.transaction.JTASynchronizationListener@a37e0d>org.eclipse.persistence.transaction.JTASynchronizationListener@a37e0d,
> Exception=Exception [EclipseLink-23011] (Eclipse Persistence Services -
> 2.1.0.v20100614-r7608):
> org.eclipse.persistence.exceptions.TransactionException
> Exception Description: UnitOfWork [UnitOfWork(
> DatabaseAccessor(connected)
> Oracle10Platform)] was rendered inactive before associated externally
> managed transaction was complete.
> Exception [EclipseLink-23011] (Eclipse Persistence Services -
> 2.1.0.v20100614-r7608):
> org.eclipse.persistence.exceptions.TransactionException
> Exception Description: UnitOfWork [UnitOfWork(
> DatabaseAccessor(connected)
> Oracle10Platform)] was rendered inactive before associated externally
> managed transaction was complete.
> at
> org.eclipse.persistence.exceptions.TransactionException.inactiveUnitOfWork(TransactionException.java:118)
> at
> org.eclipse.persistence.transaction.AbstractSynchronizationListener.afterCompletion(AbstractSynchronizationListener.java:203)
> at
> org.eclipse.persistence.transaction.JTASynchronizationListener.afterCompletion(JTASynchronizationListener.java:79)
> at
> weblogic.transaction.internal.ServerSCInfo.doAfterCompletion(ServerSCInfo.java:1023)
> It also happened with version 2.2.0-M5.
>
> Thanks,
> Constantino
>
>