We use flowable 6.5.0 and MariaDB 10.3 und see following deadlock while running different process-instances in parallel:
### Error updating database. Cause: java.sql.SQLTransactionRollbackException: (conn=45) Deadlock found when trying to get lock; try restarting transaction
### The error may exist in org/flowable/db/mapping/entity/ActivityInstance.xml
### The error may involve org.flowable.engine.impl.persistence.entity.ActivityInstanceEntityImpl.updateActivityInstance-Inline
### The error occurred while setting parameters
### SQL: update ACT_RU_ACTINST SET REV_ = ?, PROC_DEF_ID_ = ?, END_TIME_ = ?,
DURATION_ = ? where ID_ = ? and REV_ = ?
### Cause: java.sql.SQLTransactionRollbackException: (conn=45) Deadlock found when trying to get lock; try restarting transaction
at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30) ~[!/:?]
at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:199) ~[!/:?]
at org.flowable.common.engine.impl.db.DbSqlSession.flushUpdates(DbSqlSession.java:570) ~[!/:?]
at org.flowable.common.engine.impl.db.DbSqlSession.flush(DbSqlSession.java:359) ~[!/:?]
at org.flowable.common.engine.impl.interceptor.CommandContext.flushSessions(CommandContext.java:192) ~[!/:?]
at org.flowable.common.engine.impl.interceptor.CommandContext.close(CommandContext.java:61) ~[!/:?]
at org.flowable.common.engine.impl.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:81) ~[!/:?]
at org.flowable.common.engine.impl.interceptor.LogInterceptor.execute(LogInterceptor.java:30) ~[!/:?]
Root Cause:
Caused by: java.sql.SQLException: Deadlock found when trying to get lock; try restarting transaction
at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.readErrorPacket(AbstractQueryProtocol.java:1594) ~[!/:?]
at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.readPacket(AbstractQueryProtocol.java:1453) ~[!/:?]
at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.getResult(AbstractQueryProtocol.java:1415) ~[!/:?]
at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.executeQuery(AbstractQueryProtocol.java:289) ~[!/:?]
at org.mariadb.jdbc.ClientSidePreparedStatement.executeInternal(ClientSidePreparedStatement.java:221) ~[!/:?]
at org.mariadb.jdbc.ClientSidePreparedStatement.execute(ClientSidePreparedStatement.java:157) ~[!/:?]
at org.apache.commons.dbcp2.DelegatingPreparedStatement.execute(DelegatingPreparedStatement.java:198) ~[!/:2.1.1]
at org.apache.commons.dbcp2.DelegatingPreparedStatement.execute(DelegatingPreparedStatement.java:198) ~[!/:2.1.1]
at org.apache.ibatis.executor.statement.PreparedStatementHandler.update(PreparedStatementHandler.java:47) ~[!/:?]
at org.apache.ibatis.executor.statement.RoutingStatementHandler.update(RoutingStatementHandler.java:74) ~[!/:?]
at org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:50) ~[!/:?]
at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:117) ~[!/:?]
at org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:76) ~[!/:?]
at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:197) ~[!/:?]
Any ideas?