[
http://jira.jboss.com/jira/browse/JBSEAM-2575?page=all ]
Norman Richards updated JBSEAM-2575:
------------------------------------
Fix Version/s: 2.1.0.GA
(was: 2.0.2.GA)
(was: 2.1.0.A1)
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
Fix For: 2.1.0.GA
Attachments: timertest.zip
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