[
https://issues.jboss.org/browse/HIBERNATE-146?page=com.atlassian.jira.plu...
]
Arcadiy Ivanov updated HIBERNATE-146:
-------------------------------------
Description:
Whenever an entity is retrieved with an optimistic lock and then later is removed within
the same transaction, an OptimisticLockException is thrown incorrectly.
This is caused by the lock being incorrectly tracked altogether.
=====
Running the attached test case the following behaviors can be observed:
Insert + Commit, Get unlocked + Delete + Commit = OK
{noformat}
Hibernate:
/* insert com.csc.hibernate146.Person
*/ insert
into
Person
(name, version)
values
(?, ?)
Hibernate:
/* named HQL query Person.getPerson */ select
person0_.id as id1_0_,
person0_.name as name2_0_,
person0_.version as version3_0_
from
Person person0_
where
person0_.name=?
Deleting without lock: Person [id=1, name=John Doe, version=0]
Hibernate:
/* delete com.csc.hibernate146.Person */ delete
from
Person
where
id=?
and version=?
{noformat}
Insert + Commit, Get + LockModeType.OPTIMISTIC + Delete + Commit =
OptimisticLockException
{noformat}
Hibernate:
/* insert com.csc.hibernate146.Person
*/ insert
into
Person
(name, version)
values
(?, ?)
Hibernate:
/* named HQL query Person.getPerson */ select
person0_.id as id1_0_,
person0_.name as name2_0_,
person0_.version as version3_0_
from
Person person0_
where
person0_.name=?
Deleting under optimistic lock: Person [id=2, name=Jane Doe, version=0]
Hibernate:
/* delete com.csc.hibernate146.Person */ delete
from
Person
where
id=?
and version=?
Hibernate:
/* get version com.csc.hibernate146.Person */ select
version
from
Person
where
id =?
WARN [com.arjuna.ats.arjuna] ARJUNA012125: TwoPhaseCoordinator.beforeCompletion - failed
for SynchronizationImple< 0:ffffc0a87b34:-72291bdb:5424d3a3:22,
org.hibernate.engine.transaction.synchronization.internal.RegisteredSynchronization@7c440164
>: org.hibernate.OptimisticLockException: Newer version [null] of entity
[[com.csc.hibernate146.Person#2]] found in database
at
org.hibernate.action.internal.EntityVerifyVersionProcess.doBeforeTransactionCompletion(EntityVerifyVersionProcess.java:60)
[hibernate-core-4.3.5.Final.jar:4.3.5.Final]
at
org.hibernate.engine.spi.ActionQueue$BeforeTransactionCompletionProcessQueue.beforeTransactionCompletion(ActionQueue.java:715)
[hibernate-core-4.3.5.Final.jar:4.3.5.Final]
at
org.hibernate.engine.spi.ActionQueue.beforeTransactionCompletion(ActionQueue.java:389)
[hibernate-core-4.3.5.Final.jar:4.3.5.Final]
at
org.hibernate.internal.SessionImpl.beforeTransactionCompletion(SessionImpl.java:516)
[hibernate-core-4.3.5.Final.jar:4.3.5.Final]
at
org.hibernate.engine.transaction.synchronization.internal.SynchronizationCallbackCoordinatorNonTrackingImpl.beforeCompletion(SynchronizationCallbackCoordinatorNonTrackingImpl.java:119)
[hibernate-core-4.3.5.Final.jar:4.3.5.Final]
at
org.hibernate.engine.transaction.synchronization.internal.RegisteredSynchronization.beforeCompletion(RegisteredSynchronization.java:50)
[hibernate-core-4.3.5.Final.jar:4.3.5.Final]
at
com.arjuna.ats.internal.jta.resources.arjunacore.SynchronizationImple.beforeCompletion(SynchronizationImple.java:76)
at
com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.beforeCompletion(TwoPhaseCoordinator.java:358)
at
com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.end(TwoPhaseCoordinator.java:91)
at com.arjuna.ats.arjuna.AtomicAction.commit(AtomicAction.java:162)
at
com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1166)
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.jboss.as.ejb3.tx.CMTTxInterceptor.endTransaction(CMTTxInterceptor.java:93)
[wildfly-ejb3-8.1.0.Final.jar:8.1.0.Final]
at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx(CMTTxInterceptor.java:277)
[wildfly-ejb3-8.1.0.Final.jar:8.1.0.Final]
at org.jboss.as.ejb3.tx.CMTTxInterceptor.required(CMTTxInterceptor.java:340)
[wildfly-ejb3-8.1.0.Final.jar:8.1.0.Final]
at
org.jboss.as.ejb3.tx.CMTTxInterceptor.processInvocation(CMTTxInterceptor.java:239)
[wildfly-ejb3-8.1.0.Final.jar:8.1.0.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
[:1.2.1.Final]
at
org.jboss.as.ejb3.component.interceptors.CurrentInvocationContextInterceptor.processInvocation(CurrentInvocationContextInterceptor.java:41)
[wildfly-ejb3-8.1.0.Final.jar:8.1.0.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
[:1.2.1.Final]
at
org.jboss.as.ejb3.component.invocationmetrics.WaitTimeInterceptor.processInvocation(WaitTimeInterceptor.java:43)
[wildfly-ejb3-8.1.0.Final.jar:8.1.0.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
[:1.2.1.Final]
at
org.jboss.as.ejb3.security.SecurityContextInterceptor.processInvocation(SecurityContextInterceptor.java:95)
[wildfly-ejb3-8.1.0.Final.jar:8.1.0.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
[:1.2.1.Final]
at
org.jboss.as.ejb3.component.interceptors.ShutDownInterceptorFactory$1.processInvocation(ShutDownInterceptorFactory.java:64)
[wildfly-ejb3-8.1.0.Final.jar:8.1.0.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
[:1.2.1.Final]
at
org.jboss.as.ejb3.component.interceptors.LoggingInterceptor.processInvocation(LoggingInterceptor.java:59)
[wildfly-ejb3-8.1.0.Final.jar:8.1.0.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
[:1.2.1.Final]
at
org.jboss.as.ee.component.NamespaceContextInterceptor.processInvocation(NamespaceContextInterceptor.java:50)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
[:1.2.1.Final]
at
org.jboss.as.ejb3.component.interceptors.AdditionalSetupInterceptor.processInvocation(AdditionalSetupInterceptor.java:55)
[wildfly-ejb3-8.1.0.Final.jar:8.1.0.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
[:1.2.1.Final]
at
org.jboss.invocation.ContextClassLoaderInterceptor.processInvocation(ContextClassLoaderInterceptor.java:64)
[jboss-invocation-1.2.1.Final.jar:1.2.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
[:1.2.1.Final]
at org.jboss.invocation.InterceptorContext.run(InterceptorContext.java:326)
[:1.2.1.Final]
at
org.wildfly.security.manager.WildFlySecurityManager.doChecked(WildFlySecurityManager.java:448)
[wildfly-security-manager-1.0.0.Final.jar:1.0.0.Final]
at
org.jboss.invocation.AccessCheckingInterceptor.processInvocation(AccessCheckingInterceptor.java:61)
[jboss-invocation-1.2.1.Final.jar:1.2.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
[:1.2.1.Final]
at org.jboss.invocation.InterceptorContext.run(InterceptorContext.java:326)
[:1.2.1.Final]
at
org.jboss.invocation.PrivilegedWithCombinerInterceptor.processInvocation(PrivilegedWithCombinerInterceptor.java:80)
[jboss-invocation-1.2.1.Final.jar:1.2.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
[:1.2.1.Final]
at
org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61)
[jboss-invocation-1.2.1.Final.jar:1.2.1.Final]
at org.jboss.as.ee.component.ViewService$View.invoke(ViewService.java:185)
at
org.jboss.as.ee.component.ViewDescription$1.processInvocation(ViewDescription.java:182)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
[:1.2.1.Final]
at
org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61)
[jboss-invocation-1.2.1.Final.jar:1.2.1.Final]
at
org.jboss.as.ee.component.ProxyInvocationHandler.invoke(ProxyInvocationHandler.java:73)
at
com.csc.hibernate146.PersonManagementBean$$$view1.getByNameAndDeletePersonLocked(Unknown
Source) [ee86ef2e-58da-4691-b087-2c3678ec3ddf.jar:]
at
com.csc.hibernate146.test.Hibernate146Test.createAndDeletePersonLocked(Hibernate146Test.java:59)
[ee86ef2e-58da-4691-b087-2c3678ec3ddf.jar:]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_67]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
[rt.jar:1.7.0_67]
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[rt.jar:1.7.0_67]
at java.lang.reflect.Method.invoke(Method.java:606) [rt.jar:1.7.0_67]
at
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
[arquillian-junit.jar:]
at
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
[arquillian-junit.jar:]
at
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
[arquillian-junit.jar:]
at org.jboss.arquillian.junit.Arquillian$6$1.invoke(Arquillian.java:301)
[arquillian-junit.jar:]
at
org.jboss.arquillian.container.test.impl.execution.LocalTestExecuter.execute(LocalTestExecuter.java:60)
[arquillian-core.jar:]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_67]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
[rt.jar:1.7.0_67]
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[rt.jar:1.7.0_67]
at java.lang.reflect.Method.invoke(Method.java:606) [rt.jar:1.7.0_67]
at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94)
[arquillian-core.jar:]
at
org.jboss.arquillian.core.impl.EventContextImpl.invokeObservers(EventContextImpl.java:99)
[arquillian-core.jar:]
at
org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:81)
[arquillian-core.jar:]
at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:145)
[arquillian-core.jar:]
at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:116)
[arquillian-core.jar:]
at org.jboss.arquillian.core.impl.EventImpl.fire(EventImpl.java:67)
[arquillian-core.jar:]
at
org.jboss.arquillian.container.test.impl.execution.ContainerTestExecuter.execute(ContainerTestExecuter.java:38)
[arquillian-core.jar:]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_67]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
[rt.jar:1.7.0_67]
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[rt.jar:1.7.0_67]
at java.lang.reflect.Method.invoke(Method.java:606) [rt.jar:1.7.0_67]
at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94)
[arquillian-core.jar:]
at
org.jboss.arquillian.core.impl.EventContextImpl.invokeObservers(EventContextImpl.java:99)
[arquillian-core.jar:]
at
org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:81)
[arquillian-core.jar:]
at
org.jboss.arquillian.test.impl.TestContextHandler.createTestContext(TestContextHandler.java:102)
[arquillian-core.jar:]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_67]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
[rt.jar:1.7.0_67]
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[rt.jar:1.7.0_67]
at java.lang.reflect.Method.invoke(Method.java:606) [rt.jar:1.7.0_67]
at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94)
[arquillian-core.jar:]
at
org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:88)
[arquillian-core.jar:]
at
org.jboss.arquillian.test.impl.TestContextHandler.createClassContext(TestContextHandler.java:84)
[arquillian-core.jar:]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_67]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
[rt.jar:1.7.0_67]
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[rt.jar:1.7.0_67]
at java.lang.reflect.Method.invoke(Method.java:606) [rt.jar:1.7.0_67]
at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94)
[arquillian-core.jar:]
at
org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:88)
[arquillian-core.jar:]
at
org.jboss.arquillian.test.impl.TestContextHandler.createSuiteContext(TestContextHandler.java:65)
[arquillian-core.jar:]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_67]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
[rt.jar:1.7.0_67]
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[rt.jar:1.7.0_67]
at java.lang.reflect.Method.invoke(Method.java:606) [rt.jar:1.7.0_67]
at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94)
[arquillian-core.jar:]
at
org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:88)
[arquillian-core.jar:]
at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:145)
[arquillian-core.jar:]
at
org.jboss.arquillian.test.impl.EventTestRunnerAdaptor.test(EventTestRunnerAdaptor.java:111)
[arquillian-core.jar:]
at org.jboss.arquillian.junit.Arquillian$6.evaluate(Arquillian.java:294)
[arquillian-junit.jar:]
at org.jboss.arquillian.junit.Arquillian$5.evaluate(Arquillian.java:267)
[arquillian-junit.jar:]
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
[arquillian-junit.jar:]
at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
[arquillian-junit.jar:]
at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
[arquillian-junit.jar:]
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
[arquillian-junit.jar:]
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
[arquillian-junit.jar:]
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
[arquillian-junit.jar:]
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
[arquillian-junit.jar:]
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
[arquillian-junit.jar:]
at org.jboss.arquillian.junit.Arquillian$2.evaluate(Arquillian.java:193)
[arquillian-junit.jar:]
at org.jboss.arquillian.junit.Arquillian.multiExecute(Arquillian.java:345)
[arquillian-junit.jar:]
at org.jboss.arquillian.junit.Arquillian.access$200(Arquillian.java:49)
[arquillian-junit.jar:]
at org.jboss.arquillian.junit.Arquillian$3.evaluate(Arquillian.java:207)
[arquillian-junit.jar:]
at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
[arquillian-junit.jar:]
at org.jboss.arquillian.junit.Arquillian.run(Arquillian.java:155)
[arquillian-junit.jar:]
at org.junit.runner.JUnitCore.run(JUnitCore.java:160) [arquillian-junit.jar:]
at org.junit.runner.JUnitCore.run(JUnitCore.java:138) [arquillian-junit.jar:]
at
org.jboss.arquillian.junit.container.JUnitTestRunner.execute(JUnitTestRunner.java:66)
[arquillian-junit.jar:]
at
org.jboss.arquillian.protocol.servlet.runner.ServletTestRunner.executeTest(ServletTestRunner.java:160)
[arquillian-protocol.jar:]
at
org.jboss.arquillian.protocol.servlet.runner.ServletTestRunner.execute(ServletTestRunner.java:126)
[arquillian-protocol.jar:]
at
org.jboss.arquillian.protocol.servlet.runner.ServletTestRunner.doGet(ServletTestRunner.java:90)
[arquillian-protocol.jar:]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
[jboss-servlet-api_3.1_spec-1.0.0.Final.jar:1.0.0.Final]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
[jboss-servlet-api_3.1_spec-1.0.0.Final.jar:1.0.0.Final]
at
io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85)
[undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:61)
[undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
[undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
at
org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
at
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:113)
[undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:56)
[undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:45)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:61)
[undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:58)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:70)
[undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.security.handlers.SecurityInitialHandler.handleRequest(SecurityInitialHandler.java:76)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at
org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
at
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:240)
[undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:227)
[undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:73)
[undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:146)
[undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.server.Connectors.executeRootHandler(Connectors.java:177)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:727)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
[rt.jar:1.7.0_67]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
[rt.jar:1.7.0_67]
at java.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_67]
{noformat}
was:
Whenever an entity is retrieved with an optimistic lock and then later is removed within
the same transaction, an OptimisticLockException is thrown incorrectly.
This is caused by the lock being incorrectly tracked altogether.
=====
Running the attached test case the following behaviors can be observed:
{noformat}
Hibernate:
/* insert com.csc.hibernate146.Person
*/ insert
into
Person
(name, version)
values
(?, ?)
Hibernate:
/* named HQL query Person.getPerson */ select
person0_.id as id1_0_,
person0_.name as name2_0_,
person0_.version as version3_0_
from
Person person0_
where
person0_.name=?
Deleting without lock: Person [id=1, name=John Doe, version=0]
Hibernate:
/* delete com.csc.hibernate146.Person */ delete
from
Person
where
id=?
and version=?
Hibernate:
/* insert com.csc.hibernate146.Person
*/ insert
into
Person
(name, version)
values
(?, ?)
Hibernate:
/* named HQL query Person.getPerson */ select
person0_.id as id1_0_,
person0_.name as name2_0_,
person0_.version as version3_0_
from
Person person0_
where
person0_.name=?
Deleting under optimistic lock: Person [id=2, name=Jane Doe, version=0]
Hibernate:
/* delete com.csc.hibernate146.Person */ delete
from
Person
where
id=?
and version=?
Hibernate:
/* get version com.csc.hibernate146.Person */ select
version
from
Person
where
id =?
WARN [com.arjuna.ats.arjuna] ARJUNA012125: TwoPhaseCoordinator.beforeCompletion - failed
for SynchronizationImple< 0:ffffc0a87b34:-72291bdb:5424d3a3:22,
org.hibernate.engine.transaction.synchronization.internal.RegisteredSynchronization@7c440164
>: org.hibernate.OptimisticLockException: Newer version [null] of entity
[[com.csc.hibernate146.Person#2]] found in database
at
org.hibernate.action.internal.EntityVerifyVersionProcess.doBeforeTransactionCompletion(EntityVerifyVersionProcess.java:60)
[hibernate-core-4.3.5.Final.jar:4.3.5.Final]
at
org.hibernate.engine.spi.ActionQueue$BeforeTransactionCompletionProcessQueue.beforeTransactionCompletion(ActionQueue.java:715)
[hibernate-core-4.3.5.Final.jar:4.3.5.Final]
at
org.hibernate.engine.spi.ActionQueue.beforeTransactionCompletion(ActionQueue.java:389)
[hibernate-core-4.3.5.Final.jar:4.3.5.Final]
at
org.hibernate.internal.SessionImpl.beforeTransactionCompletion(SessionImpl.java:516)
[hibernate-core-4.3.5.Final.jar:4.3.5.Final]
at
org.hibernate.engine.transaction.synchronization.internal.SynchronizationCallbackCoordinatorNonTrackingImpl.beforeCompletion(SynchronizationCallbackCoordinatorNonTrackingImpl.java:119)
[hibernate-core-4.3.5.Final.jar:4.3.5.Final]
at
org.hibernate.engine.transaction.synchronization.internal.RegisteredSynchronization.beforeCompletion(RegisteredSynchronization.java:50)
[hibernate-core-4.3.5.Final.jar:4.3.5.Final]
at
com.arjuna.ats.internal.jta.resources.arjunacore.SynchronizationImple.beforeCompletion(SynchronizationImple.java:76)
at
com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.beforeCompletion(TwoPhaseCoordinator.java:358)
at
com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.end(TwoPhaseCoordinator.java:91)
at com.arjuna.ats.arjuna.AtomicAction.commit(AtomicAction.java:162)
at
com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1166)
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.jboss.as.ejb3.tx.CMTTxInterceptor.endTransaction(CMTTxInterceptor.java:93)
[wildfly-ejb3-8.1.0.Final.jar:8.1.0.Final]
at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx(CMTTxInterceptor.java:277)
[wildfly-ejb3-8.1.0.Final.jar:8.1.0.Final]
at org.jboss.as.ejb3.tx.CMTTxInterceptor.required(CMTTxInterceptor.java:340)
[wildfly-ejb3-8.1.0.Final.jar:8.1.0.Final]
at
org.jboss.as.ejb3.tx.CMTTxInterceptor.processInvocation(CMTTxInterceptor.java:239)
[wildfly-ejb3-8.1.0.Final.jar:8.1.0.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
[:1.2.1.Final]
at
org.jboss.as.ejb3.component.interceptors.CurrentInvocationContextInterceptor.processInvocation(CurrentInvocationContextInterceptor.java:41)
[wildfly-ejb3-8.1.0.Final.jar:8.1.0.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
[:1.2.1.Final]
at
org.jboss.as.ejb3.component.invocationmetrics.WaitTimeInterceptor.processInvocation(WaitTimeInterceptor.java:43)
[wildfly-ejb3-8.1.0.Final.jar:8.1.0.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
[:1.2.1.Final]
at
org.jboss.as.ejb3.security.SecurityContextInterceptor.processInvocation(SecurityContextInterceptor.java:95)
[wildfly-ejb3-8.1.0.Final.jar:8.1.0.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
[:1.2.1.Final]
at
org.jboss.as.ejb3.component.interceptors.ShutDownInterceptorFactory$1.processInvocation(ShutDownInterceptorFactory.java:64)
[wildfly-ejb3-8.1.0.Final.jar:8.1.0.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
[:1.2.1.Final]
at
org.jboss.as.ejb3.component.interceptors.LoggingInterceptor.processInvocation(LoggingInterceptor.java:59)
[wildfly-ejb3-8.1.0.Final.jar:8.1.0.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
[:1.2.1.Final]
at
org.jboss.as.ee.component.NamespaceContextInterceptor.processInvocation(NamespaceContextInterceptor.java:50)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
[:1.2.1.Final]
at
org.jboss.as.ejb3.component.interceptors.AdditionalSetupInterceptor.processInvocation(AdditionalSetupInterceptor.java:55)
[wildfly-ejb3-8.1.0.Final.jar:8.1.0.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
[:1.2.1.Final]
at
org.jboss.invocation.ContextClassLoaderInterceptor.processInvocation(ContextClassLoaderInterceptor.java:64)
[jboss-invocation-1.2.1.Final.jar:1.2.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
[:1.2.1.Final]
at org.jboss.invocation.InterceptorContext.run(InterceptorContext.java:326)
[:1.2.1.Final]
at
org.wildfly.security.manager.WildFlySecurityManager.doChecked(WildFlySecurityManager.java:448)
[wildfly-security-manager-1.0.0.Final.jar:1.0.0.Final]
at
org.jboss.invocation.AccessCheckingInterceptor.processInvocation(AccessCheckingInterceptor.java:61)
[jboss-invocation-1.2.1.Final.jar:1.2.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
[:1.2.1.Final]
at org.jboss.invocation.InterceptorContext.run(InterceptorContext.java:326)
[:1.2.1.Final]
at
org.jboss.invocation.PrivilegedWithCombinerInterceptor.processInvocation(PrivilegedWithCombinerInterceptor.java:80)
[jboss-invocation-1.2.1.Final.jar:1.2.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
[:1.2.1.Final]
at
org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61)
[jboss-invocation-1.2.1.Final.jar:1.2.1.Final]
at org.jboss.as.ee.component.ViewService$View.invoke(ViewService.java:185)
at
org.jboss.as.ee.component.ViewDescription$1.processInvocation(ViewDescription.java:182)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
[:1.2.1.Final]
at
org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61)
[jboss-invocation-1.2.1.Final.jar:1.2.1.Final]
at
org.jboss.as.ee.component.ProxyInvocationHandler.invoke(ProxyInvocationHandler.java:73)
at
com.csc.hibernate146.PersonManagementBean$$$view1.getByNameAndDeletePersonLocked(Unknown
Source) [ee86ef2e-58da-4691-b087-2c3678ec3ddf.jar:]
at
com.csc.hibernate146.test.Hibernate146Test.createAndDeletePersonLocked(Hibernate146Test.java:59)
[ee86ef2e-58da-4691-b087-2c3678ec3ddf.jar:]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_67]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
[rt.jar:1.7.0_67]
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[rt.jar:1.7.0_67]
at java.lang.reflect.Method.invoke(Method.java:606) [rt.jar:1.7.0_67]
at
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
[arquillian-junit.jar:]
at
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
[arquillian-junit.jar:]
at
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
[arquillian-junit.jar:]
at org.jboss.arquillian.junit.Arquillian$6$1.invoke(Arquillian.java:301)
[arquillian-junit.jar:]
at
org.jboss.arquillian.container.test.impl.execution.LocalTestExecuter.execute(LocalTestExecuter.java:60)
[arquillian-core.jar:]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_67]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
[rt.jar:1.7.0_67]
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[rt.jar:1.7.0_67]
at java.lang.reflect.Method.invoke(Method.java:606) [rt.jar:1.7.0_67]
at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94)
[arquillian-core.jar:]
at
org.jboss.arquillian.core.impl.EventContextImpl.invokeObservers(EventContextImpl.java:99)
[arquillian-core.jar:]
at
org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:81)
[arquillian-core.jar:]
at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:145)
[arquillian-core.jar:]
at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:116)
[arquillian-core.jar:]
at org.jboss.arquillian.core.impl.EventImpl.fire(EventImpl.java:67)
[arquillian-core.jar:]
at
org.jboss.arquillian.container.test.impl.execution.ContainerTestExecuter.execute(ContainerTestExecuter.java:38)
[arquillian-core.jar:]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_67]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
[rt.jar:1.7.0_67]
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[rt.jar:1.7.0_67]
at java.lang.reflect.Method.invoke(Method.java:606) [rt.jar:1.7.0_67]
at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94)
[arquillian-core.jar:]
at
org.jboss.arquillian.core.impl.EventContextImpl.invokeObservers(EventContextImpl.java:99)
[arquillian-core.jar:]
at
org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:81)
[arquillian-core.jar:]
at
org.jboss.arquillian.test.impl.TestContextHandler.createTestContext(TestContextHandler.java:102)
[arquillian-core.jar:]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_67]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
[rt.jar:1.7.0_67]
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[rt.jar:1.7.0_67]
at java.lang.reflect.Method.invoke(Method.java:606) [rt.jar:1.7.0_67]
at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94)
[arquillian-core.jar:]
at
org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:88)
[arquillian-core.jar:]
at
org.jboss.arquillian.test.impl.TestContextHandler.createClassContext(TestContextHandler.java:84)
[arquillian-core.jar:]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_67]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
[rt.jar:1.7.0_67]
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[rt.jar:1.7.0_67]
at java.lang.reflect.Method.invoke(Method.java:606) [rt.jar:1.7.0_67]
at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94)
[arquillian-core.jar:]
at
org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:88)
[arquillian-core.jar:]
at
org.jboss.arquillian.test.impl.TestContextHandler.createSuiteContext(TestContextHandler.java:65)
[arquillian-core.jar:]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_67]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
[rt.jar:1.7.0_67]
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[rt.jar:1.7.0_67]
at java.lang.reflect.Method.invoke(Method.java:606) [rt.jar:1.7.0_67]
at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94)
[arquillian-core.jar:]
at
org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:88)
[arquillian-core.jar:]
at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:145)
[arquillian-core.jar:]
at
org.jboss.arquillian.test.impl.EventTestRunnerAdaptor.test(EventTestRunnerAdaptor.java:111)
[arquillian-core.jar:]
at org.jboss.arquillian.junit.Arquillian$6.evaluate(Arquillian.java:294)
[arquillian-junit.jar:]
at org.jboss.arquillian.junit.Arquillian$5.evaluate(Arquillian.java:267)
[arquillian-junit.jar:]
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
[arquillian-junit.jar:]
at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
[arquillian-junit.jar:]
at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
[arquillian-junit.jar:]
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
[arquillian-junit.jar:]
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
[arquillian-junit.jar:]
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
[arquillian-junit.jar:]
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
[arquillian-junit.jar:]
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
[arquillian-junit.jar:]
at org.jboss.arquillian.junit.Arquillian$2.evaluate(Arquillian.java:193)
[arquillian-junit.jar:]
at org.jboss.arquillian.junit.Arquillian.multiExecute(Arquillian.java:345)
[arquillian-junit.jar:]
at org.jboss.arquillian.junit.Arquillian.access$200(Arquillian.java:49)
[arquillian-junit.jar:]
at org.jboss.arquillian.junit.Arquillian$3.evaluate(Arquillian.java:207)
[arquillian-junit.jar:]
at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
[arquillian-junit.jar:]
at org.jboss.arquillian.junit.Arquillian.run(Arquillian.java:155)
[arquillian-junit.jar:]
at org.junit.runner.JUnitCore.run(JUnitCore.java:160) [arquillian-junit.jar:]
at org.junit.runner.JUnitCore.run(JUnitCore.java:138) [arquillian-junit.jar:]
at
org.jboss.arquillian.junit.container.JUnitTestRunner.execute(JUnitTestRunner.java:66)
[arquillian-junit.jar:]
at
org.jboss.arquillian.protocol.servlet.runner.ServletTestRunner.executeTest(ServletTestRunner.java:160)
[arquillian-protocol.jar:]
at
org.jboss.arquillian.protocol.servlet.runner.ServletTestRunner.execute(ServletTestRunner.java:126)
[arquillian-protocol.jar:]
at
org.jboss.arquillian.protocol.servlet.runner.ServletTestRunner.doGet(ServletTestRunner.java:90)
[arquillian-protocol.jar:]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
[jboss-servlet-api_3.1_spec-1.0.0.Final.jar:1.0.0.Final]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
[jboss-servlet-api_3.1_spec-1.0.0.Final.jar:1.0.0.Final]
at
io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85)
[undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:61)
[undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
[undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
at
org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
at
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:113)
[undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:56)
[undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:45)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:61)
[undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:58)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:70)
[undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.security.handlers.SecurityInitialHandler.handleRequest(SecurityInitialHandler.java:76)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at
org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
at
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:240)
[undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:227)
[undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:73)
[undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:146)
[undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.server.Connectors.executeRootHandler(Connectors.java:177)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:727)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
[rt.jar:1.7.0_67]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
[rt.jar:1.7.0_67]
at java.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_67]
{noformat}
Remove after get with optimistic lock fails
-------------------------------------------
Key: HIBERNATE-146
URL:
https://issues.jboss.org/browse/HIBERNATE-146
Project: Hibernate Integration
Issue Type: Bug
Reporter: Arcadiy Ivanov
Assignee: Steve Ebersole
Whenever an entity is retrieved with an optimistic lock and then later is removed within
the same transaction, an OptimisticLockException is thrown incorrectly.
This is caused by the lock being incorrectly tracked altogether.
=====
Running the attached test case the following behaviors can be observed:
Insert + Commit, Get unlocked + Delete + Commit = OK
{noformat}
Hibernate:
/* insert com.csc.hibernate146.Person
*/ insert
into
Person
(name, version)
values
(?, ?)
Hibernate:
/* named HQL query Person.getPerson */ select
person0_.id as id1_0_,
person0_.name as name2_0_,
person0_.version as version3_0_
from
Person person0_
where
person0_.name=?
Deleting without lock: Person [id=1, name=John Doe, version=0]
Hibernate:
/* delete com.csc.hibernate146.Person */ delete
from
Person
where
id=?
and version=?
{noformat}
Insert + Commit, Get + LockModeType.OPTIMISTIC + Delete + Commit =
OptimisticLockException
{noformat}
Hibernate:
/* insert com.csc.hibernate146.Person
*/ insert
into
Person
(name, version)
values
(?, ?)
Hibernate:
/* named HQL query Person.getPerson */ select
person0_.id as id1_0_,
person0_.name as name2_0_,
person0_.version as version3_0_
from
Person person0_
where
person0_.name=?
Deleting under optimistic lock: Person [id=2, name=Jane Doe, version=0]
Hibernate:
/* delete com.csc.hibernate146.Person */ delete
from
Person
where
id=?
and version=?
Hibernate:
/* get version com.csc.hibernate146.Person */ select
version
from
Person
where
id =?
WARN [com.arjuna.ats.arjuna] ARJUNA012125: TwoPhaseCoordinator.beforeCompletion - failed
for SynchronizationImple< 0:ffffc0a87b34:-72291bdb:5424d3a3:22,
org.hibernate.engine.transaction.synchronization.internal.RegisteredSynchronization@7c440164
>: org.hibernate.OptimisticLockException: Newer version [null] of entity
[[com.csc.hibernate146.Person#2]] found in database
at
org.hibernate.action.internal.EntityVerifyVersionProcess.doBeforeTransactionCompletion(EntityVerifyVersionProcess.java:60)
[hibernate-core-4.3.5.Final.jar:4.3.5.Final]
at
org.hibernate.engine.spi.ActionQueue$BeforeTransactionCompletionProcessQueue.beforeTransactionCompletion(ActionQueue.java:715)
[hibernate-core-4.3.5.Final.jar:4.3.5.Final]
at
org.hibernate.engine.spi.ActionQueue.beforeTransactionCompletion(ActionQueue.java:389)
[hibernate-core-4.3.5.Final.jar:4.3.5.Final]
at
org.hibernate.internal.SessionImpl.beforeTransactionCompletion(SessionImpl.java:516)
[hibernate-core-4.3.5.Final.jar:4.3.5.Final]
at
org.hibernate.engine.transaction.synchronization.internal.SynchronizationCallbackCoordinatorNonTrackingImpl.beforeCompletion(SynchronizationCallbackCoordinatorNonTrackingImpl.java:119)
[hibernate-core-4.3.5.Final.jar:4.3.5.Final]
at
org.hibernate.engine.transaction.synchronization.internal.RegisteredSynchronization.beforeCompletion(RegisteredSynchronization.java:50)
[hibernate-core-4.3.5.Final.jar:4.3.5.Final]
at
com.arjuna.ats.internal.jta.resources.arjunacore.SynchronizationImple.beforeCompletion(SynchronizationImple.java:76)
at
com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.beforeCompletion(TwoPhaseCoordinator.java:358)
at
com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.end(TwoPhaseCoordinator.java:91)
at com.arjuna.ats.arjuna.AtomicAction.commit(AtomicAction.java:162)
at
com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1166)
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.jboss.as.ejb3.tx.CMTTxInterceptor.endTransaction(CMTTxInterceptor.java:93)
[wildfly-ejb3-8.1.0.Final.jar:8.1.0.Final]
at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx(CMTTxInterceptor.java:277)
[wildfly-ejb3-8.1.0.Final.jar:8.1.0.Final]
at org.jboss.as.ejb3.tx.CMTTxInterceptor.required(CMTTxInterceptor.java:340)
[wildfly-ejb3-8.1.0.Final.jar:8.1.0.Final]
at
org.jboss.as.ejb3.tx.CMTTxInterceptor.processInvocation(CMTTxInterceptor.java:239)
[wildfly-ejb3-8.1.0.Final.jar:8.1.0.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
[:1.2.1.Final]
at
org.jboss.as.ejb3.component.interceptors.CurrentInvocationContextInterceptor.processInvocation(CurrentInvocationContextInterceptor.java:41)
[wildfly-ejb3-8.1.0.Final.jar:8.1.0.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
[:1.2.1.Final]
at
org.jboss.as.ejb3.component.invocationmetrics.WaitTimeInterceptor.processInvocation(WaitTimeInterceptor.java:43)
[wildfly-ejb3-8.1.0.Final.jar:8.1.0.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
[:1.2.1.Final]
at
org.jboss.as.ejb3.security.SecurityContextInterceptor.processInvocation(SecurityContextInterceptor.java:95)
[wildfly-ejb3-8.1.0.Final.jar:8.1.0.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
[:1.2.1.Final]
at
org.jboss.as.ejb3.component.interceptors.ShutDownInterceptorFactory$1.processInvocation(ShutDownInterceptorFactory.java:64)
[wildfly-ejb3-8.1.0.Final.jar:8.1.0.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
[:1.2.1.Final]
at
org.jboss.as.ejb3.component.interceptors.LoggingInterceptor.processInvocation(LoggingInterceptor.java:59)
[wildfly-ejb3-8.1.0.Final.jar:8.1.0.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
[:1.2.1.Final]
at
org.jboss.as.ee.component.NamespaceContextInterceptor.processInvocation(NamespaceContextInterceptor.java:50)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
[:1.2.1.Final]
at
org.jboss.as.ejb3.component.interceptors.AdditionalSetupInterceptor.processInvocation(AdditionalSetupInterceptor.java:55)
[wildfly-ejb3-8.1.0.Final.jar:8.1.0.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
[:1.2.1.Final]
at
org.jboss.invocation.ContextClassLoaderInterceptor.processInvocation(ContextClassLoaderInterceptor.java:64)
[jboss-invocation-1.2.1.Final.jar:1.2.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
[:1.2.1.Final]
at org.jboss.invocation.InterceptorContext.run(InterceptorContext.java:326)
[:1.2.1.Final]
at
org.wildfly.security.manager.WildFlySecurityManager.doChecked(WildFlySecurityManager.java:448)
[wildfly-security-manager-1.0.0.Final.jar:1.0.0.Final]
at
org.jboss.invocation.AccessCheckingInterceptor.processInvocation(AccessCheckingInterceptor.java:61)
[jboss-invocation-1.2.1.Final.jar:1.2.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
[:1.2.1.Final]
at org.jboss.invocation.InterceptorContext.run(InterceptorContext.java:326)
[:1.2.1.Final]
at
org.jboss.invocation.PrivilegedWithCombinerInterceptor.processInvocation(PrivilegedWithCombinerInterceptor.java:80)
[jboss-invocation-1.2.1.Final.jar:1.2.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
[:1.2.1.Final]
at
org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61)
[jboss-invocation-1.2.1.Final.jar:1.2.1.Final]
at org.jboss.as.ee.component.ViewService$View.invoke(ViewService.java:185)
at
org.jboss.as.ee.component.ViewDescription$1.processInvocation(ViewDescription.java:182)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)
[:1.2.1.Final]
at
org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61)
[jboss-invocation-1.2.1.Final.jar:1.2.1.Final]
at
org.jboss.as.ee.component.ProxyInvocationHandler.invoke(ProxyInvocationHandler.java:73)
at
com.csc.hibernate146.PersonManagementBean$$$view1.getByNameAndDeletePersonLocked(Unknown
Source) [ee86ef2e-58da-4691-b087-2c3678ec3ddf.jar:]
at
com.csc.hibernate146.test.Hibernate146Test.createAndDeletePersonLocked(Hibernate146Test.java:59)
[ee86ef2e-58da-4691-b087-2c3678ec3ddf.jar:]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_67]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
[rt.jar:1.7.0_67]
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[rt.jar:1.7.0_67]
at java.lang.reflect.Method.invoke(Method.java:606) [rt.jar:1.7.0_67]
at
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
[arquillian-junit.jar:]
at
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
[arquillian-junit.jar:]
at
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
[arquillian-junit.jar:]
at org.jboss.arquillian.junit.Arquillian$6$1.invoke(Arquillian.java:301)
[arquillian-junit.jar:]
at
org.jboss.arquillian.container.test.impl.execution.LocalTestExecuter.execute(LocalTestExecuter.java:60)
[arquillian-core.jar:]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_67]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
[rt.jar:1.7.0_67]
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[rt.jar:1.7.0_67]
at java.lang.reflect.Method.invoke(Method.java:606) [rt.jar:1.7.0_67]
at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94)
[arquillian-core.jar:]
at
org.jboss.arquillian.core.impl.EventContextImpl.invokeObservers(EventContextImpl.java:99)
[arquillian-core.jar:]
at
org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:81)
[arquillian-core.jar:]
at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:145)
[arquillian-core.jar:]
at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:116)
[arquillian-core.jar:]
at org.jboss.arquillian.core.impl.EventImpl.fire(EventImpl.java:67)
[arquillian-core.jar:]
at
org.jboss.arquillian.container.test.impl.execution.ContainerTestExecuter.execute(ContainerTestExecuter.java:38)
[arquillian-core.jar:]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_67]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
[rt.jar:1.7.0_67]
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[rt.jar:1.7.0_67]
at java.lang.reflect.Method.invoke(Method.java:606) [rt.jar:1.7.0_67]
at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94)
[arquillian-core.jar:]
at
org.jboss.arquillian.core.impl.EventContextImpl.invokeObservers(EventContextImpl.java:99)
[arquillian-core.jar:]
at
org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:81)
[arquillian-core.jar:]
at
org.jboss.arquillian.test.impl.TestContextHandler.createTestContext(TestContextHandler.java:102)
[arquillian-core.jar:]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_67]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
[rt.jar:1.7.0_67]
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[rt.jar:1.7.0_67]
at java.lang.reflect.Method.invoke(Method.java:606) [rt.jar:1.7.0_67]
at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94)
[arquillian-core.jar:]
at
org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:88)
[arquillian-core.jar:]
at
org.jboss.arquillian.test.impl.TestContextHandler.createClassContext(TestContextHandler.java:84)
[arquillian-core.jar:]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_67]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
[rt.jar:1.7.0_67]
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[rt.jar:1.7.0_67]
at java.lang.reflect.Method.invoke(Method.java:606) [rt.jar:1.7.0_67]
at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94)
[arquillian-core.jar:]
at
org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:88)
[arquillian-core.jar:]
at
org.jboss.arquillian.test.impl.TestContextHandler.createSuiteContext(TestContextHandler.java:65)
[arquillian-core.jar:]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_67]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
[rt.jar:1.7.0_67]
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[rt.jar:1.7.0_67]
at java.lang.reflect.Method.invoke(Method.java:606) [rt.jar:1.7.0_67]
at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94)
[arquillian-core.jar:]
at
org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:88)
[arquillian-core.jar:]
at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:145)
[arquillian-core.jar:]
at
org.jboss.arquillian.test.impl.EventTestRunnerAdaptor.test(EventTestRunnerAdaptor.java:111)
[arquillian-core.jar:]
at org.jboss.arquillian.junit.Arquillian$6.evaluate(Arquillian.java:294)
[arquillian-junit.jar:]
at org.jboss.arquillian.junit.Arquillian$5.evaluate(Arquillian.java:267)
[arquillian-junit.jar:]
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
[arquillian-junit.jar:]
at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
[arquillian-junit.jar:]
at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
[arquillian-junit.jar:]
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
[arquillian-junit.jar:]
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
[arquillian-junit.jar:]
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
[arquillian-junit.jar:]
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
[arquillian-junit.jar:]
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
[arquillian-junit.jar:]
at org.jboss.arquillian.junit.Arquillian$2.evaluate(Arquillian.java:193)
[arquillian-junit.jar:]
at org.jboss.arquillian.junit.Arquillian.multiExecute(Arquillian.java:345)
[arquillian-junit.jar:]
at org.jboss.arquillian.junit.Arquillian.access$200(Arquillian.java:49)
[arquillian-junit.jar:]
at org.jboss.arquillian.junit.Arquillian$3.evaluate(Arquillian.java:207)
[arquillian-junit.jar:]
at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
[arquillian-junit.jar:]
at org.jboss.arquillian.junit.Arquillian.run(Arquillian.java:155)
[arquillian-junit.jar:]
at org.junit.runner.JUnitCore.run(JUnitCore.java:160) [arquillian-junit.jar:]
at org.junit.runner.JUnitCore.run(JUnitCore.java:138) [arquillian-junit.jar:]
at
org.jboss.arquillian.junit.container.JUnitTestRunner.execute(JUnitTestRunner.java:66)
[arquillian-junit.jar:]
at
org.jboss.arquillian.protocol.servlet.runner.ServletTestRunner.executeTest(ServletTestRunner.java:160)
[arquillian-protocol.jar:]
at
org.jboss.arquillian.protocol.servlet.runner.ServletTestRunner.execute(ServletTestRunner.java:126)
[arquillian-protocol.jar:]
at
org.jboss.arquillian.protocol.servlet.runner.ServletTestRunner.doGet(ServletTestRunner.java:90)
[arquillian-protocol.jar:]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
[jboss-servlet-api_3.1_spec-1.0.0.Final.jar:1.0.0.Final]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
[jboss-servlet-api_3.1_spec-1.0.0.Final.jar:1.0.0.Final]
at
io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85)
[undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:61)
[undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
[undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
at
org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
at
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:113)
[undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:56)
[undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:45)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:61)
[undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:58)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:70)
[undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.security.handlers.SecurityInitialHandler.handleRequest(SecurityInitialHandler.java:76)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at
org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
at
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:240)
[undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:227)
[undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:73)
[undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:146)
[undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.server.Connectors.executeRootHandler(Connectors.java:177)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:727)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
[rt.jar:1.7.0_67]
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
[rt.jar:1.7.0_67]
at java.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_67]
{noformat}
--
This message was sent by Atlassian JIRA
(v6.3.1#6329)