Uploaded image for project: 'jBPM'
  1. jBPM
  2. JBPM-2036

StaleObjectStateException when repeating timer signals the token

XMLWordPrintable

      With the following timer definition on a state node

      <state name='state1'>
      <timer name='timer-to-end-with-repeat' duedate='1 second' repeat='5 seconds'>
      <action class='org.jbpm.scheduler.exe.TimerDbTest$Signal' />
      </timer>
      <transition name='to_state2' to='state2'/>
      </state>

      and the action class execute() method being

      public void execute(ExecutionContext executionContext) throws Exception

      { executionContext.leaveNode(); }

      leads to:

      2009-02-10 21:38:45,404 16508 ERROR [org.hibernate.event.def.AbstractFlushingEventListener] (JbpmJobExecutor:127.0.0.1:1 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.job.Timer#86
      at org.hibernate.persister.entity.AbstractEntityPersister.check(AbstractEntityPersister.java:1769)
      at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2412)
      at org.hibernate.persister.entity.AbstractEntityPersister.updateOrInsert(AbstractEntityPersister.java:2312)
      at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2612)
      at org.hibernate.action.EntityUpdateAction.execute(EntityUpdateAction.java:96)
      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:298)
      at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
      at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
      at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
      at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
      at org.jbpm.persistence.db.DbPersistenceService.commit(DbPersistenceService.java:226)
      at org.jbpm.persistence.db.DbPersistenceService.endTransaction(DbPersistenceService.java:131)
      at org.jbpm.persistence.db.DbPersistenceService.close(DbPersistenceService.java:197)
      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:194)
      at org.jbpm.job.executor.JobExecutorThread.run(JobExecutorThread.java:61)

      If 'repeat' is not set, the token is leaving the state as expected.

            aguizar_jira Alejandro Guizar (Inactive)
            rhn-support-mputz Martin Weiler (Inactive)
            Votes:
            1 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: