Community

Async Fork Transaction Issues

reply from Rachel Hodos in jBPM - View the full discussion

Maciej,

 

With the source code I sent you, I get a NullPointerException because repositoryService isn't defined. 

 

When I add the following lines to the end of ConcurrencyTest.initialize() (and import the RepositoryService class):

    repositoryService = processEngine.get(RepositoryService.class);

    executionService = processEngine.getExecutionService();

the process gets farther but then throws the following exception:
     13:48:55,893 INF   | [DefaultCommandService] exception while executing command org.jbpm.pvm.internal.cmd.SignalCmd@15a4523

     org.jbpm.api.JbpmException: execution[TestConcurrencySimple.7.to A] is not active: async

 

Then, if I comment out signalExecutionById, I get the original exception I was complaining about:

     org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect):      [org.jbpm.pvm.internal.model.ExecutionImpl#7]

 

How the heck did you get my source code to work??

 

(Sorry to keep throwing new questions at you.)

Rachel

 

 

Full output from last scenario:

 

java jpl.mipl.pgs.test.ConcurrencyTest

ConcurrencyTest.main, beginning

ConcurrencyTest, before super.setup()

jpl/mipl/pgs/test/jbpm.cfg.xml

building ProcessEngine from resource jpl/mipl/pgs/test/jbpm.cfg.xml

14:02:57,395 INF | [DispatcherThread] starting DispatcherThread

14:02:57,432 INF   | [Environment] Hibernate 3.3.1.GA

14:02:57,445 INF   | [Environment] hibernate.properties not found

14:02:57,457 INF   | [Environment] Bytecode provider name : javassist

14:02:57,473 INF   | [Environment] using JDK 1.4 java.sql.Timestamp handling

14:02:57,632 INF   | [Configuration] configuring from resource: jbpm.hibernate.cfg.xml

14:02:57,633 INF   | [Configuration] Configuration resource: jbpm.hibernate.cfg.xml

14:02:57,752 INF   | [Configuration] Reading mappings from resource : jbpm.repository.hbm.xml

14:02:58,233 INF   | [Configuration] Reading mappings from resource : jbpm.execution.hbm.xml

14:02:58,668 INF   | [Configuration] Reading mappings from resource : jbpm.history.hbm.xml

14:02:58,901 INF   | [Configuration] Reading mappings from resource : jbpm.task.hbm.xml

14:02:59,014 INF   | [Configuration] Reading mappings from resource : jbpm.identity.hbm.xml

14:02:59,098 INF   | [Configuration] Configured SessionFactory: null

14:02:59,162 INF   | [DriverManagerConnectionProvider] Using Hibernate built-in connection pool (not for production use!)

14:02:59,163 INF   | [DriverManagerConnectionProvider] Hibernate connection pool size: 20

14:02:59,164 INF   | [DriverManagerConnectionProvider] autocommit mode: false

14:02:59,194 INF   | [DriverManagerConnectionProvider] using driver: org.hsqldb.jdbcDriver at URL: jdbc:hsqldb:mem:.

14:02:59,195 INF   | [DriverManagerConnectionProvider] connection properties: {user=sa, password=****}

14:02:59,698 INF   | [Dialect] Using dialect: org.hibernate.dialect.HSQLDialect

14:02:59,729 INF   | [TransactionFactoryFactory] Using default transaction strategy (direct JDBC transactions)

14:02:59,736 INF   | [TransactionManagerLookupFactory] No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended)

14:02:59,750 INF   | [ASTQueryTranslatorFactory] Using ASTQueryTranslatorFactory

14:02:59,914 INF   | [SessionFactoryImpl] building session factory

14:03:01,825 INF   | [SessionFactoryObjectFactory] Not binding factory to JNDI, no JNDI name configured

14:03:01,851 INF   | [SchemaExport] Running hbm2ddl schema export

14:03:01,853 INF   | [SchemaExport] exporting generated schema to database

14:03:01,906 INF   | [SchemaExport] schema export complete

14:03:02,643 INF   | [CheckDbCmd] jBPM version info: library[4.3], schema[null]

ConcurrencyTest, after super.setup()

setUp completed...

testActivityOrder: number of children = 2

testActivityOrder: signaling TestConcurrencySimple.7.to A

testActivityOrder: signaling TestConcurrencySimple.7.to B

ConcurrencyTest.main, after testActivityOrder

my name is A

my name is B

concurrencyTest.main, after tearDown

my name is A

my name is B

my name is A

my name is A

my name is B

my name is A

my name is B

In PrintNameMulti: state of execution: active-concurrent

In PrintNameMulti: execution id: TestConcurrencySimple.7.to A

my name is A2

14:03:09,097 WRN     | [HSQLDialect] HSQLDB supports only READ_UNCOMMITTED isolation

### EXCEPTION ###########################################

14:03:09,108 SEV     | [ExecuteJobCmd] exception while executing 'message[9]'

org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [org.jbpm.pvm.internal.model.ExecutionImpl#7]

at org.hibernate.dialect.lock.SelectLockingStrategy.lock(SelectLockingStrategy.java:102)

at org.hibernate.dialect.HSQLDialect$ReadUncommittedLockingStrategy.lock(HSQLDialect.java:306)

at org.hibernate.persister.entity.AbstractEntityPersister.lock(AbstractEntityPersister.java:1361)

at org.hibernate.event.def.AbstractLockUpgradeEventListener.upgradeLock(AbstractLockUpgradeEventListener.java:108)

at org.hibernate.event.def.DefaultLockEventListener.onLock(DefaultLockEventListener.java:87)

at org.hibernate.impl.SessionImpl.fireLock(SessionImpl.java:611)

at org.hibernate.impl.SessionImpl.lock(SessionImpl.java:603)

at org.jbpm.jpdl.internal.activity.JoinActivity.execute(JoinActivity.java:68)

at org.jbpm.jpdl.internal.activity.JoinActivity.execute(JoinActivity.java:49)

at org.jbpm.pvm.internal.model.op.ExecuteActivity.perform(ExecuteActivity.java:60)

at org.jbpm.pvm.internal.model.ExecutionImpl.performAtomicOperationSync(ExecutionImpl.java:656)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:597)

at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:197)

at org.jbpm.pvm.internal.model.ExecutionImpl_$$_javassist_5.performAtomicOperationSync(ExecutionImpl_$$_javassist_5.java)

at org.jbpm.pvm.internal.model.op.ExecuteEventListenerMessage.execute(ExecuteEventListenerMessage.java:154)

at org.jbpm.pvm.internal.cmd.ExecuteJobCmd.execute(ExecuteJobCmd.java:76)

at org.jbpm.pvm.internal.cmd.ExecuteJobCmd.execute(ExecuteJobCmd.java:42)

at org.jbpm.pvm.internal.svc.DefaultCommandService.execute(DefaultCommandService.java:42)

at org.jbpm.pvm.internal.tx.StandardTransactionInterceptor.execute(StandardTransactionInterceptor.java:54)

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.RetryInterceptor.execute(RetryInterceptor.java:55)

at org.jbpm.pvm.internal.svc.SkipInterceptor.execute(SkipInterceptor.java:43)

at org.jbpm.pvm.internal.jobexecutor.JobParcel.run(JobParcel.java:48)

at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)

at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)

at java.util.concurrent.FutureTask.run(FutureTask.java:138)

at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)

at java.lang.Thread.run(Thread.java:619)

### EXCEPTION ###########################################

### EXCEPTION ###########################################

14:03:09,117 INF     | [DefaultCommandService] exception while executing command org.jbpm.pvm.internal.cmd.ExecuteJobCmd@1a998c7

org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [org.jbpm.pvm.internal.model.ExecutionImpl#7]

at org.hibernate.dialect.lock.SelectLockingStrategy.lock(SelectLockingStrategy.java:102)

at org.hibernate.dialect.HSQLDialect$ReadUncommittedLockingStrategy.lock(HSQLDialect.java:306)

at org.hibernate.persister.entity.AbstractEntityPersister.lock(AbstractEntityPersister.java:1361)

at org.hibernate.event.def.AbstractLockUpgradeEventListener.upgradeLock(AbstractLockUpgradeEventListener.java:108)

at org.hibernate.event.def.DefaultLockEventListener.onLock(DefaultLockEventListener.java:87)

at org.hibernate.impl.SessionImpl.fireLock(SessionImpl.java:611)

at org.hibernate.impl.SessionImpl.lock(SessionImpl.java:603)

at org.jbpm.jpdl.internal.activity.JoinActivity.execute(JoinActivity.java:68)

at org.jbpm.jpdl.internal.activity.JoinActivity.execute(JoinActivity.java:49)

at org.jbpm.pvm.internal.model.op.ExecuteActivity.perform(ExecuteActivity.java:60)

at org.jbpm.pvm.internal.model.ExecutionImpl.performAtomicOperationSync(ExecutionImpl.java:656)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:597)

at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:197)

at org.jbpm.pvm.internal.model.ExecutionImpl_$$_javassist_5.performAtomicOperationSync(ExecutionImpl_$$_javassist_5.java)

at org.jbpm.pvm.internal.model.op.ExecuteEventListenerMessage.execute(ExecuteEventListenerMessage.java:154)

at org.jbpm.pvm.internal.cmd.ExecuteJobCmd.execute(ExecuteJobCmd.java:76)

at org.jbpm.pvm.internal.cmd.ExecuteJobCmd.execute(ExecuteJobCmd.java:42)

at org.jbpm.pvm.internal.svc.DefaultCommandService.execute(DefaultCommandService.java:42)

at org.jbpm.pvm.internal.tx.StandardTransactionInterceptor.execute(StandardTransactionInterceptor.java:54)

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.RetryInterceptor.execute(RetryInterceptor.java:55)

at org.jbpm.pvm.internal.svc.SkipInterceptor.execute(SkipInterceptor.java:43)

at org.jbpm.pvm.internal.jobexecutor.JobParcel.run(JobParcel.java:48)

at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)

at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)

at java.util.concurrent.FutureTask.run(FutureTask.java:138)

at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)

at java.lang.Thread.run(Thread.java:619)

### EXCEPTION ###########################################

my name is B

In PrintNameMulti: state of execution: active-concurrent

In PrintNameMulti: execution id: TestConcurrencySimple.7.to B

my name is B2

14:03:11,700 WRN       | [HSQLDialect] HSQLDB supports only READ_UNCOMMITTED isolation

### EXCEPTION ###########################################

14:03:11,702 SEV       | [ExecuteJobCmd] exception while executing 'message[12]'

org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [org.jbpm.pvm.internal.model.ExecutionImpl#7]

at org.hibernate.dialect.lock.SelectLockingStrategy.lock(SelectLockingStrategy.java:102)

at org.hibernate.dialect.HSQLDialect$ReadUncommittedLockingStrategy.lock(HSQLDialect.java:306)

at org.hibernate.persister.entity.AbstractEntityPersister.lock(AbstractEntityPersister.java:1361)

at org.hibernate.event.def.AbstractLockUpgradeEventListener.upgradeLock(AbstractLockUpgradeEventListener.java:108)

at org.hibernate.event.def.DefaultLockEventListener.onLock(DefaultLockEventListener.java:87)

at org.hibernate.impl.SessionImpl.fireLock(SessionImpl.java:611)

at org.hibernate.impl.SessionImpl.lock(SessionImpl.java:603)

at org.jbpm.jpdl.internal.activity.JoinActivity.execute(JoinActivity.java:68)

at org.jbpm.jpdl.internal.activity.JoinActivity.execute(JoinActivity.java:49)

at org.jbpm.pvm.internal.model.op.ExecuteActivity.perform(ExecuteActivity.java:60)

at org.jbpm.pvm.internal.model.ExecutionImpl.performAtomicOperationSync(ExecutionImpl.java:656)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:597)

at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:197)

at org.jbpm.pvm.internal.model.ExecutionImpl_$$_javassist_5.performAtomicOperationSync(ExecutionImpl_$$_javassist_5.java)

at org.jbpm.pvm.internal.model.op.ExecuteEventListenerMessage.execute(ExecuteEventListenerMessage.java:154)

at org.jbpm.pvm.internal.cmd.ExecuteJobCmd.execute(ExecuteJobCmd.java:76)

at org.jbpm.pvm.internal.cmd.ExecuteJobCmd.execute(ExecuteJobCmd.java:42)

at org.jbpm.pvm.internal.svc.DefaultCommandService.execute(DefaultCommandService.java:42)

at org.jbpm.pvm.internal.tx.StandardTransactionInterceptor.execute(StandardTransactionInterceptor.java:54)

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.RetryInterceptor.execute(RetryInterceptor.java:55)

at org.jbpm.pvm.internal.svc.SkipInterceptor.execute(SkipInterceptor.java:43)

at org.jbpm.pvm.internal.jobexecutor.JobParcel.run(JobParcel.java:48)

at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)

at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)

at java.util.concurrent.FutureTask.run(FutureTask.java:138)

at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)

at java.lang.Thread.run(Thread.java:619)

### EXCEPTION ###########################################

### EXCEPTION ###########################################

14:03:11,703 INF       | [DefaultCommandService] exception while executing command org.jbpm.pvm.internal.cmd.ExecuteJobCmd@1fd9cd5

org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [org.jbpm.pvm.internal.model.ExecutionImpl#7]

at org.hibernate.dialect.lock.SelectLockingStrategy.lock(SelectLockingStrategy.java:102)

at org.hibernate.dialect.HSQLDialect$ReadUncommittedLockingStrategy.lock(HSQLDialect.java:306)

at org.hibernate.persister.entity.AbstractEntityPersister.lock(AbstractEntityPersister.java:1361)

at org.hibernate.event.def.AbstractLockUpgradeEventListener.upgradeLock(AbstractLockUpgradeEventListener.java:108)

at org.hibernate.event.def.DefaultLockEventListener.onLock(DefaultLockEventListener.java:87)

at org.hibernate.impl.SessionImpl.fireLock(SessionImpl.java:611)

at org.hibernate.impl.SessionImpl.lock(SessionImpl.java:603)

at org.jbpm.jpdl.internal.activity.JoinActivity.execute(JoinActivity.java:68)

at org.jbpm.jpdl.internal.activity.JoinActivity.execute(JoinActivity.java:49)

at org.jbpm.pvm.internal.model.op.ExecuteActivity.perform(ExecuteActivity.java:60)

at org.jbpm.pvm.internal.model.ExecutionImpl.performAtomicOperationSync(ExecutionImpl.java:656)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:597)

at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:197)

at org.jbpm.pvm.internal.model.ExecutionImpl_$$_javassist_5.performAtomicOperationSync(ExecutionImpl_$$_javassist_5.java)

at org.jbpm.pvm.internal.model.op.ExecuteEventListenerMessage.execute(ExecuteEventListenerMessage.java:154)

at org.jbpm.pvm.internal.cmd.ExecuteJobCmd.execute(ExecuteJobCmd.java:76)

at org.jbpm.pvm.internal.cmd.ExecuteJobCmd.execute(ExecuteJobCmd.java:42)

at org.jbpm.pvm.internal.svc.DefaultCommandService.execute(DefaultCommandService.java:42)

at org.jbpm.pvm.internal.tx.StandardTransactionInterceptor.execute(StandardTransactionInterceptor.java:54)

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.RetryInterceptor.execute(RetryInterceptor.java:55)

at org.jbpm.pvm.internal.svc.SkipInterceptor.execute(SkipInterceptor.java:43)

at org.jbpm.pvm.internal.jobexecutor.JobParcel.run(JobParcel.java:48)

at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)

at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)

at java.util.concurrent.FutureTask.run(FutureTask.java:138)

at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)

at java.lang.Thread.run(Thread.java:619)

### EXCEPTION ###########################################

Reply to this message by going to Community

Start a new discussion in jBPM at Community