0 Replies Latest reply on May 20, 2009 4:37 AM by tal

    Transaction problem within a timer

    tal

      I have a timer with an action that invokes seam expression, within the action method, I invoke processInstance.suspend();
      Seems like the process get suspended, but then, I get the following exception:

      20:14:49,781 ERROR [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.graph.exe.Token#140]
      at org.hibernate.persister.entity.AbstractEntityPersister.check(AbstractEntityPersister.java:1765)
      at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2407)
      at org.hibernate.persister.entity.AbstractEntityPersister.updateOrInsert(AbstractEntityPersister.java:2307)
      at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2607)
      at org.hibernate.action.EntityUpdateAction.execute(EntityUpdateAction.java:92)
      at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:250)
      at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:234)
      at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:142)
      at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
      at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
      at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
      at org.jbpm.persistence.db.DbPersistenceService.flushSession(DbPersistenceService.java:261)
      at org.jbpm.persistence.db.DbPersistenceService.close(DbPersistenceService.java:200)
      at org.jbpm.svc.Services.close(Services.java:243)
      at org.jbpm.JbpmContext.close(JbpmContext.java:133)
      at org.jbpm.job.executor.JobExecutorThread.executeJob(JobExecutorThread.java:195)
      at org.jbpm.job.executor.JobExecutorThread.run(JobExecutorThread.java:62)
      20:14:49,786 INFO [DbPersistenceService] problem flushing session: optimistic locking failed
      20:14:49,786 INFO [Services] optimistic locking failed, could not close service: persistence


      What causes it and how can I avoid it?

      Thanks!