Siddhesh M [
http://community.jboss.org/people/siddhesh27] created the discussion
"org.hibernate.StaleObjectStateException: Row was updated or deleted by another
transaction"
To view the discussion, visit:
http://community.jboss.org/message/636462#636462
--------------------------------------------------------------
Hi ,
I am using JBPM 4.3. I can see following exception in production env.
<Nov 12, 2011 3:03:10 PM CET> <Notice> <Stdout> <BEA-000000>
<12-Nov-2011 15:03:10.576 | ERROR | DispatcherThread | .AbstractFlushingEventListener |
Could not synchronize database state with session
org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction
(or unsaved-value mapping was incorrect):
[org.jbpm.pvm.internal.model.op.ExecuteActivityMessage#683270098]
at
org.hibernate.persister.entity.AbstractEntityPersister.check(AbstractEntityPersister.java:1792)
at
org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2435)
at
org.hibernate.persister.entity.AbstractEntityPersister.updateOrInsert(AbstractEntityPersister.java:2335)
at
org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2635)
at org.hibernate.action.EntityUpdateAction.execute(EntityUpdateAction.java:115)
at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:279)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:263)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:168)
at
org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)
at
org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:50)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1027)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:365)
at
org.hibernate.transaction.CacheSynchronization.beforeCompletion(CacheSynchronization.java:88)
at
weblogic.transaction.internal.ServerSCInfo.doBeforeCompletion(ServerSCInfo.java:1224)
at
weblogic.transaction.internal.ServerSCInfo.callBeforeCompletions(ServerSCInfo.java:1199)
at
weblogic.transaction.internal.ServerSCInfo.startPrePrepareAndChain(ServerSCInfo.java:118)
at
weblogic.transaction.internal.ServerTransactionImpl.localPrePrepareAndChain(ServerTransactionImpl.java:1310)
at
weblogic.transaction.internal.ServerTransactionImpl.globalPrePrepare(ServerTransactionImpl.java:2126)
at
weblogic.transaction.internal.ServerTransactionImpl.internalCommit(ServerTransactionImpl.java:266)
at
weblogic.transaction.internal.ServerTransactionImpl.commit(ServerTransactionImpl.java:233)
at
weblogic.transaction.internal.TransactionManagerImpl.commit(TransactionManagerImpl.java:286)
at
weblogic.transaction.internal.TransactionManagerImpl.commit(TransactionManagerImpl.java:280)
at org.jbpm.pvm.internal.tx.JtaTransaction.commit(JtaTransaction.java:104)
at
org.jbpm.pvm.internal.tx.JtaTransactionInterceptor.executeInNewTx(JtaTransactionInterceptor.java:89)
at
org.jbpm.pvm.internal.tx.JtaTransactionInterceptor.execute(JtaTransactionInterceptor.java:66)
at org.jbpm.pvm.internal.svc.RetryInterceptor.execute(RetryInterceptor.java:55)
at
org.jbpm.pvm.internal.tx.JtaRetryInterceptor.executeWithRetry(JtaRetryInterceptor.java:52)
at
org.jbpm.pvm.internal.tx.JtaRetryInterceptor.execute(JtaRetryInterceptor.java:45)
<Nov 12, 2011 3:03:10 PM CET> <Notice> <Stdout> <BEA-000000>
<12-Nov-2011 15:03:10.579 | ERROR | DispatcherThread | l.jobexecutor.DispatcherThread |
excep
tion in job executor thread. waiting 5000 milliseconds
org.jbpm.api.JbpmException: couldn't rollback: Transaction does not exist
at org.jbpm.pvm.internal.tx.JtaTransaction.rollback(JtaTransaction.java:96)
at
org.jbpm.pvm.internal.tx.JtaTransactionInterceptor.executeInNewTx(JtaTransactionInterceptor.java:92)
at
org.jbpm.pvm.internal.tx.JtaTransactionInterceptor.execute(JtaTransactionInterceptor.java:66)
at org.jbpm.pvm.internal.svc.RetryInterceptor.execute(RetryInterceptor.java:55)
at
org.jbpm.pvm.internal.tx.JtaRetryInterceptor.executeWithRetry(JtaRetryInterceptor.java:52)
at
org.jbpm.pvm.internal.tx.JtaRetryInterceptor.execute(JtaRetryInterceptor.java:45)
at
org.jbpm.pvm.internal.svc.EnvironmentInterceptor.executeInNewEnvironment(EnvironmentInterceptor.java:53)
at
org.jbpm.pvm.internal.svc.EnvironmentInterceptor.execute(EnvironmentInterceptor.java:40)
at org.jbpm.pvm.internal.svc.SkipInterceptor.execute(SkipInterceptor.java:43)
at
org.jbpm.pvm.internal.jobexecutor.DispatcherThread.acquireJobs(DispatcherThread.java:126)
at
org.jbpm.pvm.internal.jobexecutor.DispatcherThread.run(DispatcherThread.java:67)
Caused by: java.lang.IllegalStateException: Transaction does not exist
at
weblogic.transaction.internal.TransactionManagerImpl.rollback(TransactionManagerImpl.java:301)
at
weblogic.transaction.internal.TransactionManagerImpl.rollback(TransactionManagerImpl.java:296)
at org.jbpm.pvm.internal.tx.JtaTransaction.rollback(JtaTransaction.java:94)
... 10 more>
Anybody has any clue.
What I have noted is though above exception is comming my workflow get completed
successully. What I think two different thread trying to access same data , one
successufully updates the data and which is why the workflow gets completed , but the
other one keeps retrying for many times. Please let me know any solution to such race
condition.
Thanks.
--------------------------------------------------------------
Reply to this message by going to Community
[
http://community.jboss.org/message/636462#636462]
Start a new discussion in jBPM Development at Community
[
http://community.jboss.org/choose-container!input.jspa?contentType=1&...]