database deadlock in wso2 bps when creating human task

浪尽此生 提交于 2019-12-24 12:33:51

问题


When calls bps service to create human tasks, I got following dead-lock exceptions.

The bps version is 3.2.0. The database is sqlserver 2012. Can somebody takes a look?

java.sql.SQLException: Transaction (Process ID 162) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.
    at net.sourceforge.jtds.jdbc.SQLDiagnostic.addDiagnostic(SQLDiagnostic.java:368)
    at net.sourceforge.jtds.jdbc.TdsCore.tdsErrorToken(TdsCore.java:2820)
    at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2258)
    at net.sourceforge.jtds.jdbc.TdsCore.isDataInResultSet(TdsCore.java:796)
    at net.sourceforge.jtds.jdbc.JtdsResultSet.<init>(JtdsResultSet.java:149)
    at net.sourceforge.jtds.jdbc.JtdsStatement.executeSQLQuery(JtdsStatement.java:483)
    at net.sourceforge.jtds.jdbc.JtdsPreparedStatement.executeQuery(JtdsPreparedStatement.java:778)
    at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96)
    at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96)
    at org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:267)
    at org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator$LoggingConnection$LoggingPreparedStatement.executeQuery(LoggingConnectionDecorator.java:1144)
    at org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:265)
    at org.apache.openjpa.jdbc.kernel.JDBCStoreManager$CancelPreparedStatement.executeQuery(JDBCStoreManager.java:1750)
    at org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:255)
    at org.apache.openjpa.jdbc.sql.SelectImpl.executeQuery(SelectImpl.java:499)
    at org.apache.openjpa.jdbc.sql.SelectImpl.execute(SelectImpl.java:424)
    at org.apache.openjpa.jdbc.sql.SelectImpl.execute(SelectImpl.java:382)
    at org.apache.openjpa.jdbc.sql.SelectImpl.addEagerResults(SelectImpl.java:458)
    at org.apache.openjpa.jdbc.sql.SelectImpl.getEagerResult(SelectImpl.java:534)
    at org.apache.openjpa.jdbc.sql.SelectImpl.execute(SelectImpl.java:432)
    at org.apache.openjpa.jdbc.sql.SelectImpl.execute(SelectImpl.java:391)
    at org.apache.openjpa.jdbc.sql.LogicalUnion$UnionSelect.execute(LogicalUnion.java:427)
    at org.apache.openjpa.jdbc.sql.LogicalUnion.execute(LogicalUnion.java:230)
    at org.apache.openjpa.jdbc.sql.LogicalUnion.execute(LogicalUnion.java:220)
    at org.apache.openjpa.jdbc.kernel.SelectResultObjectProvider.open(SelectResultObjectProvider.java:94)
    at org.apache.openjpa.lib.rop.EagerResultList.<init>(EagerResultList.java:34)
    at org.apache.openjpa.kernel.QueryImpl.toResult(QueryImpl.java:1251)
    at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:1007)
    at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:863)
    at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:794)
    at org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:542)
    at org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:286)
    at org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:302)
    at org.apache.ode.dao.jpa.ProcessDAOImpl.getCorrelator(ProcessDAOImpl.java:99)
    at org.apache.ode.bpel.engine.BpelRuntimeContextImpl.registerForExtensionNotification(BpelRuntimeContextImpl.java:1665)
    at org.apache.ode.bpel.runtime.extension.AbstractLongRunningExtensionOperation.registerForNotification(AbstractLongRunningExtensionOperation.java:77)
    at org.apache.ode.bpel.runtime.extension.AbstractLongRunningExtensionOperation$WAITING.<init>(AbstractLongRunningExtensionOperation.java:115)
    at org.apache.ode.bpel.runtime.extension.AbstractLongRunningExtensionOperation$WAITING.<init>(AbstractLongRunningExtensionOperation.java:104)
    at org.apache.ode.bpel.runtime.extension.AbstractLongRunningExtensionOperation.run(AbstractLongRunningExtensionOperation.java:101)
    at sun.reflect.GeneratedMethodAccessor43.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at org.apache.ode.jacob.vpu.JacobVPU$JacobThreadImpl.run(JacobVPU.java:451)
    at org.apache.ode.jacob.vpu.JacobVPU.execute(JacobVPU.java:139)
    at org.apache.ode.bpel.engine.BpelRuntimeContextImpl.execute(BpelRuntimeContextImpl.java:898)
    at org.apache.ode.bpel.engine.PartnerLinkMyRoleImpl.invokeNewInstance(PartnerLinkMyRoleImpl.java:208)
    at org.apache.ode.bpel.engine.BpelProcess$1.invoke(BpelProcess.java:283)
    at org.apache.ode.bpel.engine.BpelProcess.invokeProcess(BpelProcess.java:224)
    at org.apache.ode.bpel.engine.BpelProcess.invokeProcess(BpelProcess.java:279)
    at org.apache.ode.bpel.engine.BpelProcess.handleJobDetails(BpelProcess.java:434)
    at org.apache.ode.bpel.engine.BpelEngineImpl.onScheduledJob(BpelEngineImpl.java:558)
    at org.apache.ode.bpel.engine.BpelServerImpl.onScheduledJob(BpelServerImpl.java:467)
    at org.apache.ode.scheduler.simple.SimpleScheduler$RunJob$1.call(SimpleScheduler.java:536)
    at org.apache.ode.scheduler.simple.SimpleScheduler$RunJob$1.call(SimpleScheduler.java:530)
    at org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(SimpleScheduler.java:280)
    at org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(SimpleScheduler.java:235)
    at org.apache.ode.scheduler.simple.SimpleScheduler$RunJob.call(SimpleScheduler.java:530)
    at org.apache.ode.scheduler.simple.SimpleScheduler$RunJob.call(SimpleScheduler.java:514)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
    at java.util.concurrent.FutureTask.run(FutureTask.java:166)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:722)



java.sql.SQLException: Transaction (Process ID 167) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.
    at net.sourceforge.jtds.jdbc.SQLDiagnostic.addDiagnostic(SQLDiagnostic.java:368)
    at net.sourceforge.jtds.jdbc.TdsCore.tdsErrorToken(TdsCore.java:2820)
    at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2258)
    at net.sourceforge.jtds.jdbc.TdsCore.isDataInResultSet(TdsCore.java:796)
    at net.sourceforge.jtds.jdbc.JtdsResultSet.<init>(JtdsResultSet.java:149)
    at net.sourceforge.jtds.jdbc.JtdsStatement.executeSQLQuery(JtdsStatement.java:483)
    at net.sourceforge.jtds.jdbc.JtdsPreparedStatement.executeQuery(JtdsPreparedStatement.java:778)
    at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96)
    at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96)
    at org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:267)
    at org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator$LoggingConnection$LoggingPreparedStatement.executeQuery(LoggingConnectionDecorator.java:1144)
    at org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:265)
    at org.apache.openjpa.jdbc.kernel.JDBCStoreManager$CancelPreparedStatement.executeQuery(JDBCStoreManager.java:1750)
    at org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:255)
    at org.apache.openjpa.jdbc.sql.SelectImpl.executeQuery(SelectImpl.java:499)
    at org.apache.openjpa.jdbc.sql.SelectImpl.execute(SelectImpl.java:424)
    at org.apache.openjpa.jdbc.sql.SelectImpl.execute(SelectImpl.java:382)
    at org.apache.openjpa.jdbc.sql.SelectImpl.addEagerResults(SelectImpl.java:458)
    at org.apache.openjpa.jdbc.sql.SelectImpl.getEagerResult(SelectImpl.java:534)
    at org.apache.openjpa.jdbc.sql.SelectImpl.execute(SelectImpl.java:432)
    at org.apache.openjpa.jdbc.sql.SelectImpl.execute(SelectImpl.java:391)
    at org.apache.openjpa.jdbc.sql.LogicalUnion$UnionSelect.execute(LogicalUnion.java:427)
    at org.apache.openjpa.jdbc.sql.LogicalUnion.execute(LogicalUnion.java:230)
    at org.apache.openjpa.jdbc.sql.LogicalUnion.execute(LogicalUnion.java:220)
    at org.apache.openjpa.jdbc.kernel.SelectResultObjectProvider.open(SelectResultObjectProvider.java:94)
    at org.apache.openjpa.lib.rop.EagerResultList.<init>(EagerResultList.java:34)
    at org.apache.openjpa.kernel.QueryImpl.toResult(QueryImpl.java:1251)
    at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:1007)
    at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:863)
    at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:794)
    at org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:542)
    at org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:286)
    at org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:302)
    at org.apache.ode.dao.jpa.ProcessDAOImpl.getCorrelator(ProcessDAOImpl.java:99)
    at org.apache.ode.bpel.engine.BpelRuntimeContextImpl.registerForExtensionNotification(BpelRuntimeContextImpl.java:1665)
    at org.apache.ode.bpel.runtime.extension.AbstractLongRunningExtensionOperation.registerForNotification(AbstractLongRunningExtensionOperation.java:77)
    at org.apache.ode.bpel.runtime.extension.AbstractLongRunningExtensionOperation$WAITING.<init>(AbstractLongRunningExtensionOperation.java:115)
    at org.apache.ode.bpel.runtime.extension.AbstractLongRunningExtensionOperation$WAITING.<init>(AbstractLongRunningExtensionOperation.java:104)
    at org.apache.ode.bpel.runtime.extension.AbstractLongRunningExtensionOperation.run(AbstractLongRunningExtensionOperation.java:101)
    at sun.reflect.GeneratedMethodAccessor43.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at org.apache.ode.jacob.vpu.JacobVPU$JacobThreadImpl.run(JacobVPU.java:451)
    at org.apache.ode.jacob.vpu.JacobVPU.execute(JacobVPU.java:139)
    at org.apache.ode.bpel.engine.BpelRuntimeContextImpl.execute(BpelRuntimeContextImpl.java:898)
    at org.apache.ode.bpel.engine.PartnerLinkMyRoleImpl.invokeNewInstance(PartnerLinkMyRoleImpl.java:208)
    at org.apache.ode.bpel.engine.BpelProcess$1.invoke(BpelProcess.java:283)
    at org.apache.ode.bpel.engine.BpelProcess.invokeProcess(BpelProcess.java:224)
    at org.apache.ode.bpel.engine.BpelProcess.invokeProcess(BpelProcess.java:279)
    at org.apache.ode.bpel.engine.BpelProcess.handleJobDetails(BpelProcess.java:434)
    at org.apache.ode.bpel.engine.BpelEngineImpl.onScheduledJob(BpelEngineImpl.java:558)
    at org.apache.ode.bpel.engine.BpelServerImpl.onScheduledJob(BpelServerImpl.java:467)
    at org.apache.ode.scheduler.simple.SimpleScheduler$RunJob$1.call(SimpleScheduler.java:536)
    at org.apache.ode.scheduler.simple.SimpleScheduler$RunJob$1.call(SimpleScheduler.java:530)
    at org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(SimpleScheduler.java:280)
    at org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(SimpleScheduler.java:235)
    at org.apache.ode.scheduler.simple.SimpleScheduler$RunJob.call(SimpleScheduler.java:530)
    at org.apache.ode.scheduler.simple.SimpleScheduler$RunJob.call(SimpleScheduler.java:514)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
    at java.util.concurrent.FutureTask.run(FutureTask.java:166)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:722)

回答1:


Do you have a BPS cluster ? By going through your stack trace, dead lock was generated from Apache ODE engine when executing a job. With default clustering configuration, there is possibility of getting such deadlocks. This is known limitation in ODE 1.3.5 version and WSO2BPS 3.2.0.

However this is properly fixed in WSO2BPS 3.5.0. :)

https://wso2.org/jira/browse/BPS-675

https://github.com/wso2/wso2-ode/pull/7

My recommend is to migrate from WSO2BPS 3.2.0 to WSO2BPS 3.5.0 as it is straight forward. Following documentation describes migration steps.

https://docs.wso2.com/display/BPS350/Upgrading+to+the+Latest+BPS+Version



来源:https://stackoverflow.com/questions/33756320/database-deadlock-in-wso2-bps-when-creating-human-task

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!