My advice is to set ode-axis2.threads.pool.size=1 is ode-axis2.properties. Then retry your test.
Regards 2009/2/19 Andi Abes <[email protected]>: > Based on Alex's advice, I've replaced the derby DB, and made sure to > specify (from ODE-507) > openjpa.jdbc.TransactionIsolation= read-committed > > But I'm still not quite out of the woods: > FATAL - GeronimoLog.fatal(116) | Engine requested response while the > message exchange hqejbhcnphr423h3vathv3 was in the state COMPLETED_OK > ERROR - GeronimoLog.error(104) | The message exchange seems to be in an > unconsistent state, you're probably missing a reply on a > request/response interaction. > INFO - GeronimoLog.info(79) | ActivityRecovery: Registering activity 43, > failure reason: org.apache.ode.bpel.iapi.BpelEngineException: Engine > requested response > while the message exchange hqejbhcnphr423h3vathv3 was in the state > COMPLETED_OK on channel 75 > > > This does not happen if there's just 1 branch in the parallel for-each > loop, but wholly reproducible when the count is 2 or more. > > Any advice? > > > > > From: Andi Abes > Sent: Wednesday, February 18, 2009 6:47 PM > To: '[email protected]' > Subject: Lock exceptions > > Setting - ODE 1.2, Tomcat, Derby JPA (out of box config). > > I'm getting the following in the log...Any pointers? > > The BPEL process uses a for-each (parallel = yes) loop to invoke a few > instances in parallel (5 in this case) and correlate responses which are > performed using 1-way invocations into the BPEL engine. > The exceptions start showing up shortly after the last response was sent > back from the called services. > > > WARN - GeronimoLog.warn(96) | connectionErrorOccurred called with null > java.sql.SQLException: A lock could not be obtained due to a deadlock, > cycle of locks and waiters is: > Lock : ROW, ODE_JOB, (1,7) > Waiting XID : {522, X} , SA, delete from ODE_JOB where jobid = ? and > nodeid = ? > Granted XID : {512, X} > Lock : ROW, ODE_JOB, (1,21) > Waiting XID : {512, X} , SA, delete from ODE_JOB where jobid = ? and > nodeid = ? > Granted XID : {522, X} > . The selected victim is XID : 522. > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown > Source) > at > org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Source) > at > org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Un > known Source) > at > org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unkno > wn Source) > at > org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown > Source) > at > org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown > Source) > at > org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown > Source) > at > org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(Unkno > wn Source) > at > org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeUpdate(Unknown > Source) > at > org.tranql.connector.jdbc.PreparedStatementHandle.executeUpdate(Prepared > StatementHandle.java:103) > at > org.apache.ode.scheduler.simple.JdbcDelegate.deleteJob(JdbcDelegate.java > :92) > at > org.apache.ode.scheduler.simple.SimpleScheduler$4$1.call(SimpleScheduler > .java:339) > at > org.apache.ode.scheduler.simple.SimpleScheduler$4$1.call(SimpleScheduler > .java:336) > at > org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(SimpleSc > heduler.java:174) > at > org.apache.ode.scheduler.simple.SimpleScheduler$4.call(SimpleScheduler.j > ava:335) > at > org.apache.ode.scheduler.simple.SimpleScheduler$4.call(SimpleScheduler.j > ava:332) > at > java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:269) > at java.util.concurrent.FutureTask.run(FutureTask.java:123) > at > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecuto > r.java:650) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.ja > va:675) > at java.lang.Thread.run(Thread.java:595) > Caused by: ERROR 40001: A lock could not be obtained due to a deadlock, > cycle of locks and waiters is: > Lock : ROW, ODE_JOB, (1,7) > Waiting XID : {522, X} , SA, delete from ODE_JOB where jobid = ? and > nodeid = ? > Granted XID : {512, X} > Lock : ROW, ODE_JOB, (1,21) > Waiting XID : {512, X} , SA, delete from ODE_JOB where jobid = ? and > nodeid = ? > Granted XID : {522, X} > . The selected victim is XID : 522. > at > org.apache.derby.iapi.error.StandardException.newException(Unknown > Source) > at > org.apache.derby.impl.services.locks.Deadlock.buildException(Unknown > Source) > at > org.apache.derby.impl.services.locks.ConcurrentLockSet.lockObject(Unknow > n Source) > at > org.apache.derby.impl.services.locks.AbstractPool.lockObject(Unknown > Source) > at > org.apache.derby.impl.services.locks.ConcurrentPool.lockObject(Unknown > Source) > at > org.apache.derby.impl.store.raw.xact.RowLocking3.lockRecordForWrite(Unkn > own Source) > at > org.apache.derby.impl.store.access.heap.HeapController.lockRow(Unknown > Source) > at > org.apache.derby.impl.store.access.heap.HeapController.lockRow(Unknown > Source) > at > org.apache.derby.impl.store.access.btree.index.B2IRowLocking3.lockRowOnP > age(Unknown Source) > at > org.apache.derby.impl.store.access.btree.index.B2IRowLocking3._lockScanR > ow(Unknown Source) > at > org.apache.derby.impl.store.access.btree.index.B2IRowLockingRR.lockScanR > ow(Unknown Source) > at > org.apache.derby.impl.store.access.btree.BTreeForwardScan.fetchRows(Unkn > own Source) > at > org.apache.derby.impl.store.access.btree.BTreeScan.fetchNext(Unknown > Source) > at > org.apache.derby.impl.sql.execute.TableScanResultSet.getNextRowCore(Unkn > own Source) > at > org.apache.derby.impl.sql.execute.IndexRowToBaseRowResultSet.getNextRowC > ore(Unknown Source) > at > org.apache.derby.impl.sql.execute.ProjectRestrictResultSet.getNextRowCor > e(Unknown Source) > at > org.apache.derby.impl.sql.execute.ProjectRestrictResultSet.getNextRowCor > e(Unknown Source) > at > org.apache.derby.impl.sql.execute.DMLWriteResultSet.getNextRowCore(Unkno > wn Source) > at > org.apache.derby.impl.sql.execute.DeleteResultSet.setup(Unknown Source) > at > org.apache.derby.impl.sql.execute.DeleteResultSet.open(Unknown Source) > at > org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unknown > Source) > ... 15 more > ERROR - GeronimoLog.error(108) | Unexpected exception rolling back > org.apache.geronimo.connector.outbound.localxaresou...@109dafc; > continuing with rollback > javax.transaction.xa.XAException > at > org.apache.geronimo.connector.outbound.LocalXAResource.rollback(LocalXAR > esource.java:88) > at > org.apache.geronimo.transaction.manager.TransactionImpl.rollbackResource > s(TransactionImpl.java:581) > at > org.apache.geronimo.transaction.manager.TransactionImpl.rollback(Transac > tionImpl.java:475) > at > org.apache.geronimo.transaction.manager.TransactionManagerImpl.rollback( > TransactionManagerImpl.java:250) > at > org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(SimpleSc > heduler.java:183) > at > org.apache.ode.scheduler.simple.SimpleScheduler$4.call(SimpleScheduler.j > ava:335) > at > org.apache.ode.scheduler.simple.SimpleScheduler$4.call(SimpleScheduler.j > ava:332) > at > java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:269) > at java.util.concurrent.FutureTask.run(FutureTask.java:123) > at > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecuto > r.java:650) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.ja > va:675) > at java.lang.Thread.run(Thread.java:595) > Caused by: Unable to rollback > at > org.tranql.connector.jdbc.ManagedJDBCConnection.localTransactionRollback > (ManagedJDBCConnection.java:113) > at > org.tranql.connector.AbstractManagedConnection$LocalTransactionImpl.roll > back(AbstractManagedConnection.java:196) > at > org.apache.geronimo.connector.outbound.LocalXAResource.rollback(LocalXAR > esource.java:86) > ... 11 more > Caused by: java.sql.SQLException: No current connection. > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown > Source) > at > org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown Source) > at > org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown Source) > at > org.apache.derby.impl.jdbc.Util.noCurrentConnection(Unknown Source) > at > org.apache.derby.impl.jdbc.EmbedConnection.checkIfClosed(Unknown Source) > at > org.apache.derby.impl.jdbc.EmbedConnection.setupContextStack(Unknown > Source) > at > org.apache.derby.impl.jdbc.EmbedConnection.rollback(Unknown Source) > at > org.tranql.connector.jdbc.ManagedJDBCConnection.localTransactionRollback > (ManagedJDBCConnection.java:111) > ... 13 more > ERROR - GeronimoLog.error(108) | Error while executing transaction > javax.transaction.SystemException > at > org.apache.geronimo.transaction.manager.TransactionImpl.rollbackResource > s(TransactionImpl.java:585) > at > org.apache.geronimo.transaction.manager.TransactionImpl.rollback(Transac > tionImpl.java:475) > at > org.apache.geronimo.transaction.manager.TransactionManagerImpl.rollback( > TransactionManagerImpl.java:250) > at > org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(SimpleSc > heduler.java:183) > at > org.apache.ode.scheduler.simple.SimpleScheduler$4.call(SimpleScheduler.j > ava:335) > at > org.apache.ode.scheduler.simple.SimpleScheduler$4.call(SimpleScheduler.j > ava:332) > at > java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:269) > at java.util.concurrent.FutureTask.run(FutureTask.java:123) > at > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecuto > r.java:650) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.ja > va:675) > at java.lang.Thread.run(Thread.java:595) > > > -- RafaĆ Rusin www.mimuw.edu.pl/~rrusin
