[jbossseam-issues] [JBoss JIRA] Created: (JBSEAM-2575) The jta transaction manager returns a null transaction when ending a process that was triggered by a jbpm timer.

Peter Brewer (JIRA) jira-events at lists.jboss.org
Mon Feb 4 08:22:03 EST 2008


The jta transaction manager returns a null transaction when ending a process that was triggered by a jbpm timer.
----------------------------------------------------------------------------------------------------------------

                 Key: JBSEAM-2575
                 URL: http://jira.jboss.com/jira/browse/JBSEAM-2575
             Project: JBoss Seam
          Issue Type: Bug
          Components: BPM
    Affects Versions: 2.0.0.GA
         Environment: JBoss AS 4.2.1.GA
JBoss Seam 2.0.0.GA (with Hibernate 3.2.2.GA and JBPM JPDL 3.2.2)
            Reporter: Peter Brewer


Summary:

The jta transaction manager returns a null transaction when ending a process that was triggered by a jbpm timer.

Steps to reproduce:

Define a jbpm process containing a task timer with an expiry.
Start the process and progress to the task with the timer defined.
Wait for the timer to fire.

The timer fires and progresses to the end of the workflow. This causes a call to deleteTimersByProcessInstance:

org.jbpm.db.JobSession.java

205  public void deleteJobsForProcessInstance(ProcessInstance processInstance) {
206    try {
207      Transaction transaction = session.getTransaction();
208      transaction.registerSynchronization(new DeleteJobsSynchronization(processInstance));
209    } catch (Exception e) {
210      log.error(e);
211      throw new JbpmException("couldn't delete jobs for '"+processInstance+"'", e);
212    }
213  }

Stepping through the code, on line 207 the transaction variable is populated (i.e. not null) but when it calls transaction.registerSynchronization(...):

org.hibernate.transaction.JTATransaction.java

300	public void registerSynchronization(Synchronization sync) throws HibernateException {
301		if (getTransactionManager()==null) {
302			throw new IllegalStateException("JTA TransactionManager not available");
303		}
304		else {
305			try {
306				getTransactionManager().getTransaction().registerSynchronization(sync);
307			}
308			catch (Exception e) {
309				throw new TransactionException("could not register synchronization", e);
310			}
311		}
312	}

the call on line 306 to getTransactionManager().getTransaction() returns null causing a NPE.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the seam-issues mailing list