Hi,
I have two processes:
GenericInvoke - this process invoke AddTask method from external
webservice and waiting for response (invoke method GetResult from
external webservice every 15 s until receive response). I set endpoint
from url in input variable.
MainProcess - invoke 10 times (sometimes 2 parallels invoke in flow)
GenericInvoke.
If I start one instance it always finish sucessfull.
If I start 10 instances with embedded databse it finsh sucessfull, but
It takes a lot of time and I get a lot of errors "A lock could not be
obtained due to a deadlock" (errors in attachment).
If I start 10 instances with external databse (SQL Server) 5-6 finish
succesfull and 4-5 instances stuck with state active (errors in
attachment).
I think that apache dosn't support deadlock for Sql Server.
I have to use SQL Server. Can you advise how can I fix this problem?
Thanks,
Rafal
09:48:11,125 WARN [MyRoleMessageExchangeImpl] Transaction is rolled back on
sending back the response.
09:48:11,235 WARN [GeronimoConnectionEventListener] connectionErrorOccurred
called with null
java.sql.SQLTransactionRollbackException: A lock could not be obtained due to a
deadlock, cycle of locks and waiters is:
Lock : ROW, ODE_EVENT, (2,6)
Waiting XID : {1103, U} , SA, DELETE FROM ODE_EVENT WHERE EVENT_ID IN (SELECT
DISTINCT t0.EVENT_ID FROM ODE_EVENT t0 WHERE (t0.INSTANCE_ID = ?))
Granted XID : {1073, U}
Lock : ROW, ODE_EVENT, (80,23)
Waiting XID : {1073, S} , SA, DELETE FROM ODE_EVENT WHERE EVENT_ID IN (SELECT
DISTINCT t0.EVENT_ID FROM ODE_EVENT t0 WHERE (t0.INSTANCE_ID = ?))
Granted XID : {1103, X}
. The selected victim is XID : 1103.
at
org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown
Source)
at
org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown
Source)
at
org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown
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(Unknown
Source)
at
org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeUpdate(Unknown Source)
at
org.tranql.connector.jdbc.PreparedStatementHandle.executeUpdate(PreparedStatementHandle.java:103)
at
org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:269)
at
org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator$LoggingConnection$LoggingPreparedStatement.executeUpdate(LoggingConnectionDecorator.java:864)
at
org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:269)
at
org.apache.openjpa.jdbc.kernel.JDBCStoreManager$CancelPreparedStatement.executeUpdate(JDBCStoreManager.java:1586)
at
org.apache.openjpa.jdbc.kernel.JDBCStoreQuery.executeUpdate(JDBCStoreQuery.java:671)
at
org.apache.openjpa.jdbc.kernel.JDBCStoreQuery.executeBulkOperation(JDBCStoreQuery.java:513)
at
org.apache.openjpa.jdbc.kernel.JDBCStoreQuery.executeDelete(JDBCStoreQuery.java:433)
at
org.apache.openjpa.kernel.ExpressionStoreQuery$DataStoreExecutor.executeDelete(ExpressionStoreQuery.java:686)
at org.apache.openjpa.kernel.QueryImpl.delete(QueryImpl.java:1008)
at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:850)
at org.apache.openjpa.kernel.QueryImpl.deleteAll(QueryImpl.java:876)
at
org.apache.openjpa.kernel.DelegatingQuery.deleteAll(DelegatingQuery.java:557)
at
org.apache.openjpa.persistence.QueryImpl.executeUpdate(QueryImpl.java:330)
at
org.apache.ode.dao.jpa.ProcessInstanceDAOImpl.deleteEvents(ProcessInstanceDAOImpl.java:228)
at
org.apache.ode.dao.jpa.ProcessInstanceDAOImpl.delete(ProcessInstanceDAOImpl.java:179)
at
org.apache.ode.bpel.engine.BpelRuntimeContextImpl$2.beforeCompletion(BpelRuntimeContextImpl.java:281)
at
org.apache.ode.scheduler.simple.SimpleScheduler$2.beforeCompletion(SimpleScheduler.java:333)
at
org.apache.geronimo.transaction.manager.TransactionImpl.beforeCompletion(TransactionImpl.java:514)
at
org.apache.geronimo.transaction.manager.TransactionImpl.beforeCompletion(TransactionImpl.java:498)
at
org.apache.geronimo.transaction.manager.TransactionImpl.beforePrepare(TransactionImpl.java:400)
at
org.apache.geronimo.transaction.manager.TransactionImpl.commit(TransactionImpl.java:257)
at
org.apache.geronimo.transaction.manager.TransactionManagerImpl.commit(TransactionManagerImpl.java:238)
at
org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(SimpleScheduler.java:291)
at
org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(SimpleScheduler.java:239)
at
org.apache.ode.scheduler.simple.SimpleScheduler$RunJob.call(SimpleScheduler.java:512)
at
org.apache.ode.scheduler.simple.SimpleScheduler$RunJob.call(SimpleScheduler.java:496)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown
Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.sql.SQLException: A lock could not be obtained due to a
deadlock, cycle of locks and waiters is:
Lock : ROW, ODE_EVENT, (2,6)
Waiting XID : {1103, U} , SA, DELETE FROM ODE_EVENT WHERE EVENT_ID IN (SELECT
DISTINCT t0.EVENT_ID FROM ODE_EVENT t0 WHERE (t0.INSTANCE_ID = ?))
Granted XID : {1073, U}
Lock : ROW, ODE_EVENT, (80,23)
Waiting XID : {1073, S} , SA, DELETE FROM ODE_EVENT WHERE EVENT_ID IN (SELECT
DISTINCT t0.EVENT_ID FROM ODE_EVENT t0 WHERE (t0.INSTANCE_ID = ?))
Granted XID : {1103, X}
. The selected victim is XID : 1103.
at
org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
at
org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown
Source)
... 41 more
Caused by: ERROR 40001: A lock could not be obtained due to a deadlock, cycle
of locks and waiters is:
Lock : ROW, ODE_EVENT, (2,6)
Waiting XID : {1103, U} , SA, DELETE FROM ODE_EVENT WHERE EVENT_ID IN (SELECT
DISTINCT t0.EVENT_ID FROM ODE_EVENT t0 WHERE (t0.INSTANCE_ID = ?))
Granted XID : {1073, U}
Lock : ROW, ODE_EVENT, (80,23)
Waiting XID : {1073, S} , SA, DELETE FROM ODE_EVENT WHERE EVENT_ID IN (SELECT
DISTINCT t0.EVENT_ID FROM ODE_EVENT t0 WHERE (t0.INSTANCE_ID = ?))
Granted XID : {1103, X}
. The selected victim is XID : 1103.
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(Unknown
Source)
at org.apache.derby.impl.services.locks.AbstractPool.lockObject(Unknown
Source)
at
org.apache.derby.impl.store.raw.xact.RowLocking2.lockRecordForRead(Unknown
Source)
at
org.apache.derby.impl.store.access.conglomerate.OpenConglomerate.lockPositionForRead(Unknown
Source)
at
org.apache.derby.impl.store.access.conglomerate.GenericScanController.fetchRows(Unknown
Source)
at org.apache.derby.impl.store.access.heap.HeapScan.fetchNext(Unknown
Source)
at
org.apache.derby.impl.sql.execute.TableScanResultSet.getNextRowCore(Unknown
Source)
at org.apache.derby.impl.sql.execute.JoinResultSet.openCore(Unknown
Source)
at
org.apache.derby.impl.sql.execute.ProjectRestrictResultSet.openCore(Unknown
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.executeStmt(Unknown Source)
at org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unknown
Source)
... 35 more
10:11:27,303 ERROR [Transaction] Unexpected exception rolling back
org.apache.geronimo.connector.outbound.LocalXAResource@1f41559; continuing with
rollback
javax.transaction.xa.XAException
at
org.apache.geronimo.connector.outbound.LocalXAResource.rollback(LocalXAResource.java:88)
at
org.apache.geronimo.transaction.manager.TransactionImpl.rollbackResources(TransactionImpl.java:581)
at
org.apache.geronimo.transaction.manager.TransactionImpl.commit(TransactionImpl.java:267)
at
org.apache.geronimo.transaction.manager.TransactionManagerImpl.commit(TransactionManagerImpl.java:238)
at
org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(SimpleScheduler.java:291)
at
org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(SimpleScheduler.java:239)
at
org.apache.ode.scheduler.simple.SimpleScheduler$RunJob.call(SimpleScheduler.java:512)
at
org.apache.ode.scheduler.simple.SimpleScheduler$RunJob.call(SimpleScheduler.java:496)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown
Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: Unable to rollback
at
org.tranql.connector.jdbc.ManagedJDBCConnection.localTransactionRollback(ManagedJDBCConnection.java:113)
at
org.tranql.connector.AbstractManagedConnection$LocalTransactionImpl.rollback(AbstractManagedConnection.java:196)
at
org.apache.geronimo.connector.outbound.LocalXAResource.rollback(LocalXAResource.java:86)
... 12 more
Caused by: java.sql.SQLNonTransientConnectionException: No current connection.
at
org.apache.derby.impl.jdbc.SQLExceptionFactory40.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)
... 14 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.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown
Source)
... 22 more
08:27:22,653 ERROR [BpelEngineImpl] Scheduled job failed; jobDetail=JobDetails(
instanceId: null mexId: hqejbhcnphr62k889qhh2k
processId: {http://www.mg.gov.pl}Invoke-2 type: INVOKE_INTERNAL channel: null
correlatorId: null correlationKeySet: null
retryCount: null inMem: false detailsExt: {})
java.lang.NullPointerException
at
org.apache.ode.bpel.engine.BpelProcess.invokeProcess(BpelProcess.java:212)
at
org.apache.ode.bpel.engine.BpelProcess.invokeProcess(BpelProcess.java:279)
at
org.apache.ode.bpel.engine.BpelProcess.handleJobDetails(BpelProcess.java:426)
at
org.apache.ode.bpel.engine.BpelEngineImpl.onScheduledJob(BpelEngineImpl.java:460)
at
org.apache.ode.bpel.engine.BpelServerImpl.onScheduledJob(BpelServerImpl.java:450)
at
org.apache.ode.scheduler.simple.SimpleScheduler$RunJob$1.call(SimpleScheduler.java:518)
at
org.apache.ode.scheduler.simple.SimpleScheduler$RunJob$1.call(SimpleScheduler.java:512)
at
org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(SimpleScheduler.java:284)
at
org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(SimpleScheduler.java:239)
at
org.apache.ode.scheduler.simple.SimpleScheduler$RunJob.call(SimpleScheduler.java:512)
at
org.apache.ode.scheduler.simple.SimpleScheduler$RunJob.call(SimpleScheduler.java:496)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown
Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
08:33:51,097 ERROR [INVOKE] Failure during invoke:
08:38:10,967 ERROR [BpelRuntimeContextImpl] Invalid response state for mex
hqejbhcnphr62k889qhj6n: ASYNC
08:36:27,331 WARN [ExternalService] Fault response: faultType=(unkown)
<?xml version='1.0' encoding='utf-8'?><s:Envelope
xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><s:Fault>
<faultcode
xmlns:a="http://schemas.microsoft.com/net/2005/12/windowscommunicationfoundation/dispatcher">a:InternalServiceFault</faultcode>
<faultstring xml:lang="pl-PL">The server was unable to process the request due
to an internal error. For more information about the error,
either turn on IncludeExceptionDetailInFaults (either from
ServiceBehaviorAttribute or from the <serviceDebug> configuration behavior)
on the server in order to send the exception information back to the client, or
turn on tracing as per the Microsoft .NET Framework 3.0
SDK documentation and inspect the server trace
logs.</faultstring></s:Fault></s:Body></s:Envelope>