<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Deadlock causing transaction corruption and breaking async executor in Alfresco Archive</title>
    <link>https://connect.hyland.com/t5/alfresco-archive/deadlock-causing-transaction-corruption-and-breaking-async/m-p/184667#M137797</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;As an update, we are still getting deadlocks using the modified CallActivityParseHandler as described above, which is not surprising because of the other unresolved issues.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 24 Jul 2015 23:34:08 GMT</pubDate>
    <dc:creator>grahamjohnson80</dc:creator>
    <dc:date>2015-07-24T23:34:08Z</dc:date>
    <item>
      <title>Deadlock causing transaction corruption and breaking async executor</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/deadlock-causing-transaction-corruption-and-breaking-async/m-p/184660#M137790</link>
      <description>We have just started using Activiti (replacing JBPM 4.4) and we saw a deadlock occur in our test environment that appears to have been caused by on thread trying to lock an ACT_RU_EXECUTION row while another was updating it (unclear if it was locked already).&amp;nbsp; More troubling, though, this seemed to</description>
      <pubDate>Fri, 10 Jul 2015 21:12:36 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/deadlock-causing-transaction-corruption-and-breaking-async/m-p/184660#M137790</guid>
      <dc:creator>grahamjohnson80</dc:creator>
      <dc:date>2015-07-10T21:12:36Z</dc:date>
    </item>
    <item>
      <title>Re: Deadlock causing transaction corruption and breaking async executor</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/deadlock-causing-transaction-corruption-and-breaking-async/m-p/184661#M137791</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Thanks for the detailed description of your setup. Unfortunately I don't see anything wrong there.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;So the logic you see is not a bug. The update of the lock time is for the execution of jobs (async activity / timer). &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;The other update that is happening is a regular update. One of the two should lose here … not going into a deadlock. No idea why it would go into a deadlock … would be interesting to find out why the database decides to do this in this case.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Do you have a process definition where this failed?&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 14 Jul 2015 19:57:09 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/deadlock-causing-transaction-corruption-and-breaking-async/m-p/184661#M137791</guid>
      <dc:creator>jbarrez</dc:creator>
      <dc:date>2015-07-14T19:57:09Z</dc:date>
    </item>
    <item>
      <title>Re: Deadlock causing transaction corruption and breaking async executor</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/deadlock-causing-transaction-corruption-and-breaking-async/m-p/184662#M137792</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi Joram, thanks for your response.&amp;nbsp; Although I haven't yet been able to reproduce this deadlock with additional logging to fully determine what is going on, I did two possible causes (possibly interrelated with each other):&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;1. Exclusive jobs notify (via AsyncJobAddedNotification) about new jobs they have created as soon as the job execution is committed.&amp;nbsp; The new job begins executing (or, if it is exclusive, locking via LockExclusiveJobCmd) immediately upon notification, but then an UnlockExclusiveJobCmd is executed for the first job that tries to clear the LOCK_TIME_ of the ACT_RU_EXECUTION (one of the two SQL statements involved in my deadlocks).&amp;nbsp; So two threads are trying to access/update the same ACT_RU_EXECUTION row concurrently (the UnlockExecutionJobCmd from the first job, and the ExecuteAsyncJobCmd from the second job).&amp;nbsp; The second SQL statement involved in the deadlock comes out of the second job execution.&amp;nbsp; I'm not sure if it matter, but that second job happens to be non-exclusive – see below – so it does not try to lock the execution before executing.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;2. Some of my jobs (including the one for the second job involved in the deadlock) are not exclusive.&amp;nbsp; In the logs, I seem them inserted with EXCLUSIVE_ = false/0, and they do not try to lock or unlock the execution around being executed.&amp;nbsp; However, my understanding is that all my jobs should be exclusive.&amp;nbsp; The user guide says: "Since Activiti 5.9 [we are on 5.17], the JobExecutor makes sure that jobs from a single process instance are never executed concurrently." and "Since Activiti 5.9, exclusive jobs are the default configuration. All asynchronous continuations and timer events are thus exclusive by default. In addition, if you want a job to be non-exclusive, you can configure it as such using activiti:exclusive="false"." I do not have any activity:exclusive="false" in any of my process definitions.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Questions:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;- Shouldn't the async executor wait until the UnlockExclusiveJobCmd has been committed before sending the AsyncJobAddedNotification that allows another thread to start the new job and access/update the same execution row that the current thread still needs to update (to clear the lock time)?&amp;nbsp; Or is the current behavior by design?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;- Why are some jobs non-exclusive when I expect all jobs to be exclusive?&amp;nbsp; How can I correct this?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;- If the second job were exclusive, would it then run serially on the same thread as the job that created it instead of on the other thread?&amp;nbsp; Or would it still be picked up by the other thread, but not deadlock due to it locking the execution before executing?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Jul 2015 21:17:21 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/deadlock-causing-transaction-corruption-and-breaking-async/m-p/184662#M137792</guid>
      <dc:creator>grahamjohnson80</dc:creator>
      <dc:date>2015-07-16T21:17:21Z</dc:date>
    </item>
    <item>
      <title>Re: Deadlock causing transaction corruption and breaking async executor</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/deadlock-causing-transaction-corruption-and-breaking-async/m-p/184663#M137793</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Here is annotated log output (irrelevant lines/data removed) showing the deadlock occurring as described in my previous post.&amp;nbsp; Sorry but I can't figure out how to format this as fixed-width without syntax highlighting:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;CODE&gt;&lt;BR /&gt;&lt;BR /&gt;# Job 110543 starts running:&lt;BR /&gt;&lt;BR /&gt;2015-07-20 16:25:40,197 DEBUG [i.engine.impl.interceptor.LogInterceptor] (pool-14-thread-2________________) &lt;BR /&gt;2015-07-20 16:25:40,197 DEBUG [i.engine.impl.interceptor.LogInterceptor] (pool-14-thread-2________________) — starting LockExclusiveJobCmd ——————————————————–&lt;BR /&gt;2015-07-20 16:25:40,197 DEBUG [pl.interceptor.JtaTransactionInterceptor] (pool-14-thread-2________________) Running command with propagation REQUIRED&lt;BR /&gt;2015-07-20 16:25:40,197 DEBUG [viti.engine.impl.cmd.LockExclusiveJobCmd] (pool-14-thread-2________________) Executing lock exclusive job 110543 110490&lt;BR /&gt;2015-07-20 16:25:40,199 DEBUG [org.activiti.engine.impl.db.DbSqlSession] (pool-14-thread-2________________) flush summary: 0 insert, 0 update, 0 delete.&lt;BR /&gt;2015-07-20 16:25:40,199 DEBUG [org.activiti.engine.impl.db.DbSqlSession] (pool-14-thread-2________________) now executing flush…&lt;BR /&gt;2015-07-20 16:25:40,199 DEBUG [i.engine.impl.interceptor.LogInterceptor] (pool-14-thread-2________________) — LockExclusiveJobCmd finished ——————————————————–&lt;BR /&gt;2015-07-20 16:25:40,199 DEBUG [i.engine.impl.interceptor.LogInterceptor] (pool-14-thread-2________________) &lt;BR /&gt;2015-07-20 16:25:40,199 DEBUG [i.engine.impl.interceptor.LogInterceptor] (pool-14-thread-2________________) &lt;BR /&gt;2015-07-20 16:25:40,199 DEBUG [i.engine.impl.interceptor.LogInterceptor] (pool-14-thread-2________________) — starting ExecuteAsyncJobCmd ——————————————————–&lt;BR /&gt;2015-07-20 16:25:40,199 DEBUG [pl.interceptor.JtaTransactionInterceptor] (pool-14-thread-2________________) Running command with propagation REQUIRED&lt;BR /&gt;2015-07-20 16:25:40,199 DEBUG [iviti.engine.impl.cmd.ExecuteAsyncJobCmd] (pool-14-thread-2________________) Executing async job 110543&lt;BR /&gt;2015-07-20 16:25:40,200 DEBUG [m.runtime.AtomicOperationActivityExecute] (pool-14-thread-2________________) ProcessInstance[110490] executes Activity[…]&lt;BR /&gt;2015-07-20 16:25:40,213 DEBUG [micOperationTransitionNotifyListenerTake] (pool-14-thread-2________________) ProcessInstance[110490] takes transition […]&lt;BR /&gt;2015-07-20 16:25:40,214 DEBUG [org.activiti.engine.impl.db.DbSqlSession] (pool-14-thread-2________________) flush summary: 2 insert, 1 update, 1 delete.&lt;BR /&gt;2015-07-20 16:25:40,214 DEBUG [org.activiti.engine.impl.db.DbSqlSession] (pool-14-thread-2________________)&amp;nbsp;&amp;nbsp; insert HistoricActivityInstanceEntity[…]&lt;BR /&gt;2015-07-20 16:25:40,215 DEBUG [org.activiti.engine.impl.db.DbSqlSession] (pool-14-thread-2________________)&amp;nbsp;&amp;nbsp; insert JobEntity [id=110545]&lt;BR /&gt;2015-07-20 16:25:40,215 DEBUG [org.activiti.engine.impl.db.DbSqlSession] (pool-14-thread-2________________)&amp;nbsp;&amp;nbsp; update ProcessInstance[110490]&lt;BR /&gt;2015-07-20 16:25:40,215 DEBUG [org.activiti.engine.impl.db.DbSqlSession] (pool-14-thread-2________________)&amp;nbsp;&amp;nbsp; delete JobEntity [id=110543]&lt;BR /&gt;2015-07-20 16:25:40,215 DEBUG [org.activiti.engine.impl.db.DbSqlSession] (pool-14-thread-2________________) now executing flush…&lt;BR /&gt;2015-07-20 16:25:40,215 DEBUG [org.activiti.engine.impl.db.DbSqlSession] (pool-14-thread-2________________) inserting: HistoricActivityInstanceEntity[…]&lt;BR /&gt;&lt;BR /&gt;# Job 110543 creates new job 110545.&amp;nbsp; Unlike 110543, 110545 is created as non-exclusive (EXCLUSIVE_ = false):&lt;BR /&gt;&lt;BR /&gt;2015-07-20 16:25:40,216 DEBUG [org.activiti.engine.impl.db.DbSqlSession] (pool-14-thread-2________________) inserting: JobEntity [id=110545]&lt;BR /&gt;2015-07-20 16:25:40,216 DEBUG [rsistence.entity.JobEntity.insertMessage] (pool-14-thread-2________________) ==&amp;gt;&amp;nbsp; Preparing: insert into ACT_RU_JOB ( ID_, REV_, TYPE_, LOCK_OWNER_, LOCK_EXP_TIME_, EXCLUSIVE_, EXECUTION_ID_, PROCESS_INSTANCE_ID_, PROC_DEF_ID_, DUEDATE_, RETRIES_, EXCEPTION_STACK_ID_, EXCEPTION_MSG_, HANDLER_TYPE_, HANDLER_CFG_, TENANT_ID_) values (?, 1, 'message', ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ) &lt;BR /&gt;2015-07-20 16:25:40,216 DEBUG [rsistence.entity.JobEntity.insertMessage] (pool-14-thread-2________________) ==&amp;gt; Parameters: 110545(String), null, null, false(Boolean), 110490(String), 110490(String), […](String), 2015-07-20 16:30:40.214(Timestamp), 3(Integer), null, null, async-continuation(String), null, […](String)&lt;BR /&gt;&lt;BR /&gt;# Job 110543, on commit, notifies about new job 110545:&lt;BR /&gt;&lt;BR /&gt;2015-07-20 16:25:40,221 DEBUG [pl.jobexecutor.AsyncJobAddedNotification] (pool-14-thread-2________________) notifying job executor of new job&lt;BR /&gt;&lt;BR /&gt;# Job 110545 immediately starts running on the other thread.&amp;nbsp; Since it is non-exclusive, it doesn't try to lock the execution before running:&lt;BR /&gt;&lt;BR /&gt;2015-07-20 16:25:40,221 DEBUG [i.engine.impl.interceptor.LogInterceptor] (________________pool-14-thread-1) &lt;BR /&gt;2015-07-20 16:25:40,221 DEBUG [i.engine.impl.interceptor.LogInterceptor] (________________pool-14-thread-1) — starting ExecuteAsyncJobCmd ——————————————————–&lt;BR /&gt;2015-07-20 16:25:40,221 DEBUG [pl.interceptor.JtaTransactionInterceptor] (________________pool-14-thread-1) Running command with propagation REQUIRED&lt;BR /&gt;2015-07-20 16:25:40,221 DEBUG [iviti.engine.impl.cmd.ExecuteAsyncJobCmd] (________________pool-14-thread-1) Executing async job 110545&lt;BR /&gt;2015-07-20 16:25:40,223 DEBUG [ime.AtomicOperationTransitionCreateScope] (________________pool-14-thread-1) create scope: parent ProcessInstance[110490] continues as execution ScopeExecution[110546]&lt;BR /&gt;2015-07-20 16:25:40,223 DEBUG [m.runtime.AtomicOperationActivityExecute] (________________pool-14-thread-1) ScopeExecution[110546] executes Activity[…]&lt;BR /&gt;2015-07-20 16:25:40,227 DEBUG [m.runtime.AtomicOperationActivityExecute] (________________pool-14-thread-1) ProcessInstance[110548] executes Activity[…]&lt;BR /&gt;2015-07-20 16:25:40,228 DEBUG [.impl.bpmn.behavior.BpmnActivityBehavior] (________________pool-14-thread-1) Leaving activity '[…]'&lt;BR /&gt;2015-07-20 16:25:40,228 DEBUG [micOperationTransitionNotifyListenerTake] (________________pool-14-thread-1) ProcessInstance[110548] takes transition […]&lt;BR /&gt;2015-07-20 16:25:40,229 DEBUG [org.activiti.engine.impl.db.DbSqlSession] (________________pool-14-thread-1) flush summary: 18 insert, 1 update, 1 delete.&lt;BR /&gt;2015-07-20 16:25:40,229 DEBUG [org.activiti.engine.impl.db.DbSqlSession] (________________pool-14-thread-1)&amp;nbsp;&amp;nbsp; insert ScopeExecution[…]&lt;BR /&gt;2015-07-20 16:25:40,230 DEBUG [org.activiti.engine.impl.db.DbSqlSession] (________________pool-14-thread-1)&amp;nbsp;&amp;nbsp; insert HistoricActivityInstanceEntity[…]&lt;BR /&gt;2015-07-20 16:25:40,230 DEBUG [org.activiti.engine.impl.db.DbSqlSession] (________________pool-14-thread-1)&amp;nbsp;&amp;nbsp; insert ProcessInstance[…]&lt;BR /&gt;2015-07-20 16:25:40,230 DEBUG [org.activiti.engine.impl.db.DbSqlSession] (________________pool-14-thread-1)&amp;nbsp;&amp;nbsp; insert HistoricProcessInstanceEntity[…]&lt;BR /&gt;2015-07-20 16:25:40,230 DEBUG [org.activiti.engine.impl.db.DbSqlSession] (________________pool-14-thread-1)&amp;nbsp;&amp;nbsp; insert HistoricActivityInstanceEntity[…]&lt;BR /&gt;2015-07-20 16:25:40,230 DEBUG [org.activiti.engine.impl.db.DbSqlSession] (________________pool-14-thread-1)&amp;nbsp;&amp;nbsp; insert VariableInstanceEntity[…]&lt;BR /&gt;2015-07-20 16:25:40,230 DEBUG [org.activiti.engine.impl.db.DbSqlSession] (________________pool-14-thread-1)&amp;nbsp;&amp;nbsp; insert HistoricVariableInstanceEntity[…]&lt;BR /&gt;2015-07-20 16:25:40,230 DEBUG [org.activiti.engine.impl.db.DbSqlSession] (________________pool-14-thread-1)&amp;nbsp;&amp;nbsp; insert VariableInstanceEntity[…]&lt;BR /&gt;2015-07-20 16:25:40,230 DEBUG [org.activiti.engine.impl.db.DbSqlSession] (________________pool-14-thread-1)&amp;nbsp;&amp;nbsp; insert HistoricVariableInstanceEntity[…]&lt;BR /&gt;2015-07-20 16:25:40,230 DEBUG [org.activiti.engine.impl.db.DbSqlSession] (________________pool-14-thread-1)&amp;nbsp;&amp;nbsp; insert VariableInstanceEntity[…]&lt;BR /&gt;2015-07-20 16:25:40,230 DEBUG [org.activiti.engine.impl.db.DbSqlSession] (________________pool-14-thread-1)&amp;nbsp;&amp;nbsp; insert HistoricVariableInstanceEntity[…]&lt;BR /&gt;2015-07-20 16:25:40,230 DEBUG [org.activiti.engine.impl.db.DbSqlSession] (________________pool-14-thread-1)&amp;nbsp;&amp;nbsp; insert VariableInstanceEntity[…]&lt;BR /&gt;2015-07-20 16:25:40,230 DEBUG [org.activiti.engine.impl.db.DbSqlSession] (________________pool-14-thread-1)&amp;nbsp;&amp;nbsp; insert HistoricVariableInstanceEntity[…]&lt;BR /&gt;2015-07-20 16:25:40,230 DEBUG [org.activiti.engine.impl.db.DbSqlSession] (________________pool-14-thread-1)&amp;nbsp;&amp;nbsp; insert VariableInstanceEntity[…]&lt;BR /&gt;2015-07-20 16:25:40,230 DEBUG [org.activiti.engine.impl.db.DbSqlSession] (________________pool-14-thread-1)&amp;nbsp;&amp;nbsp; insert HistoricVariableInstanceEntity[…]&lt;BR /&gt;2015-07-20 16:25:40,230 DEBUG [org.activiti.engine.impl.db.DbSqlSession] (________________pool-14-thread-1)&amp;nbsp;&amp;nbsp; insert VariableInstanceEntity[…]&lt;BR /&gt;2015-07-20 16:25:40,230 DEBUG [org.activiti.engine.impl.db.DbSqlSession] (________________pool-14-thread-1)&amp;nbsp;&amp;nbsp; insert HistoricVariableInstanceEntity[…]&lt;BR /&gt;2015-07-20 16:25:40,230 DEBUG [org.activiti.engine.impl.db.DbSqlSession] (________________pool-14-thread-1)&amp;nbsp;&amp;nbsp; insert JobEntity [id=110556]&lt;BR /&gt;2015-07-20 16:25:40,230 DEBUG [org.activiti.engine.impl.db.DbSqlSession] (________________pool-14-thread-1)&amp;nbsp;&amp;nbsp; update ProcessInstance[110490]&lt;BR /&gt;2015-07-20 16:25:40,230 DEBUG [org.activiti.engine.impl.db.DbSqlSession] (________________pool-14-thread-1)&amp;nbsp;&amp;nbsp; delete JobEntity [id=110545]&lt;BR /&gt;2015-07-20 16:25:40,230 DEBUG [org.activiti.engine.impl.db.DbSqlSession] (________________pool-14-thread-1) now executing flush…&lt;BR /&gt;2015-07-20 16:25:40,230 DEBUG [org.activiti.engine.impl.db.DbSqlSession] (________________pool-14-thread-1) inserting: ScopeExecution[110546]&lt;BR /&gt;2015-07-20 16:25:40,231 DEBUG [org.activiti.engine.impl.db.DbSqlSession] (________________pool-14-thread-1) inserting: HistoricActivityInstanceEntity[…]&lt;BR /&gt;2015-07-20 16:25:40,231 DEBUG [org.activiti.engine.impl.db.DbSqlSession] (________________pool-14-thread-1) inserting: ProcessInstance[110548]&lt;BR /&gt;2015-07-20 16:25:40,232 DEBUG [i.engine.impl.interceptor.LogInterceptor] (pool-14-thread-2________________) — ExecuteAsyncJobCmd finished ——————————————————–&lt;BR /&gt;2015-07-20 16:25:40,232 DEBUG [i.engine.impl.interceptor.LogInterceptor] (pool-14-thread-2________________) &lt;BR /&gt;&lt;BR /&gt;# Job 110543 tries to unlock itself, in the middle of 110545's execution (note the interleaved output between the two threads):&lt;BR /&gt;&lt;BR /&gt;2015-07-20 16:25:40,232 DEBUG [i.engine.impl.interceptor.LogInterceptor] (pool-14-thread-2________________) &lt;BR /&gt;2015-07-20 16:25:40,232 DEBUG [i.engine.impl.interceptor.LogInterceptor] (pool-14-thread-2________________) — starting UnlockExclusiveJobCmd ——————————————————–&lt;BR /&gt;2015-07-20 16:25:40,232 DEBUG [pl.interceptor.JtaTransactionInterceptor] (pool-14-thread-2________________) Running command with propagation REQUIRED&lt;BR /&gt;2015-07-20 16:25:40,232 DEBUG [ti.engine.impl.cmd.UnlockExclusiveJobCmd] (pool-14-thread-2________________) Unlocking exclusive job 110543&lt;BR /&gt;2015-07-20 16:25:40,232 DEBUG [org.activiti.engine.impl.db.DbSqlSession] (________________pool-14-thread-1) inserting: HistoricProcessInstanceEntity[superProcessInstanceId=110490]&lt;BR /&gt;2015-07-20 16:25:40,233 DEBUG [e.entity.ExecutionEntity.selectExecution] (pool-14-thread-2________________) ==&amp;gt;&amp;nbsp; Preparing: select * from ACT_RU_EXECUTION where ID_ = ? &lt;BR /&gt;2015-07-20 16:25:40,233 DEBUG [e.entity.ExecutionEntity.selectExecution] (pool-14-thread-2________________) ==&amp;gt; Parameters: 110490(String)&lt;BR /&gt;&lt;BR /&gt;# The update that ends up deadlocking and gets rolled back by MySQL:&lt;BR /&gt;&lt;BR /&gt;2015-07-20 16:25:40,234 DEBUG [utionEntity.clearProcessInstanceLockTime] (pool-14-thread-2________________) ==&amp;gt;&amp;nbsp; Preparing: update ACT_RU_EXECUTION set LOCK_TIME_ = null where ID_ = ? &lt;BR /&gt;2015-07-20 16:25:40,234 DEBUG [utionEntity.clearProcessInstanceLockTime] (pool-14-thread-2________________) ==&amp;gt; Parameters: 110490(String)&lt;BR /&gt;2015-07-20 16:25:40,234 DEBUG [org.activiti.engine.impl.db.DbSqlSession] (________________pool-14-thread-1) inserting: HistoricActivityInstanceEntity[…]&lt;BR /&gt;2015-07-20 16:25:40,235 DEBUG [org.activiti.engine.impl.db.DbSqlSession] (________________pool-14-thread-1) inserting: VariableInstanceEntity[…]&lt;BR /&gt;2015-07-20 16:25:40,235 DEBUG [org.activiti.engine.impl.db.DbSqlSession] (________________pool-14-thread-1) inserting: HistoricVariableInstanceEntity[…]&lt;BR /&gt;2015-07-20 16:25:40,236 DEBUG [org.activiti.engine.impl.db.DbSqlSession] (________________pool-14-thread-1) inserting: VariableInstanceEntity[…]&lt;BR /&gt;2015-07-20 16:25:40,237 DEBUG [org.activiti.engine.impl.db.DbSqlSession] (________________pool-14-thread-1) inserting: HistoricVariableInstanceEntity[…]&lt;BR /&gt;2015-07-20 16:25:40,237 DEBUG [org.activiti.engine.impl.db.DbSqlSession] (________________pool-14-thread-1) inserting: VariableInstanceEntity[…]&lt;BR /&gt;2015-07-20 16:25:40,238 DEBUG [org.activiti.engine.impl.db.DbSqlSession] (________________pool-14-thread-1) inserting: HistoricVariableInstanceEntity[…]&lt;BR /&gt;2015-07-20 16:25:40,238 DEBUG [org.activiti.engine.impl.db.DbSqlSession] (________________pool-14-thread-1) inserting: VariableInstanceEntity[…]&lt;BR /&gt;2015-07-20 16:25:40,239 DEBUG [org.activiti.engine.impl.db.DbSqlSession] (________________pool-14-thread-1) inserting: HistoricVariableInstanceEntity[…]&lt;BR /&gt;2015-07-20 16:25:40,240 DEBUG [org.activiti.engine.impl.db.DbSqlSession] (________________pool-14-thread-1) inserting: VariableInstanceEntity[…]&lt;BR /&gt;2015-07-20 16:25:40,240 DEBUG [org.activiti.engine.impl.db.DbSqlSession] (________________pool-14-thread-1) inserting: HistoricVariableInstanceEntity[…]&lt;BR /&gt;2015-07-20 16:25:40,241 DEBUG [org.activiti.engine.impl.db.DbSqlSession] (________________pool-14-thread-1) inserting: VariableInstanceEntity[…]&lt;BR /&gt;2015-07-20 16:25:40,241 DEBUG [org.activiti.engine.impl.db.DbSqlSession] (________________pool-14-thread-1) inserting: HistoricVariableInstanceEntity[…]&lt;BR /&gt;2015-07-20 16:25:40,242 DEBUG [org.activiti.engine.impl.db.DbSqlSession] (________________pool-14-thread-1) inserting: JobEntity […]&lt;BR /&gt;&lt;BR /&gt;The other update involved in the deadlock:&lt;BR /&gt;&lt;BR /&gt;2015-07-20 16:25:40,242 DEBUG [org.activiti.engine.impl.db.DbSqlSession] (________________pool-14-thread-1) updating: ProcessInstance[110490]&lt;BR /&gt;2015-07-20 16:25:40,243 DEBUG [e.entity.ExecutionEntity.updateExecution] (________________pool-14-thread-1) ==&amp;gt;&amp;nbsp; Preparing: update ACT_RU_EXECUTION set REV_ = ?, BUSINESS_KEY_ = ?, PROC_DEF_ID_ = ?, ACT_ID_ = ?, IS_ACTIVE_ = ?, IS_CONCURRENT_ = ?, IS_SCOPE_ = ?, IS_EVENT_SCOPE_ = ?, PARENT_ID_ = ?, SUPER_EXEC_ = ?, SUSPENSION_STATE_ = ?, CACHED_ENT_STATE_ = ?, NAME_ = ?, LOCK_TIME_ = ? where ID_ = ? and REV_ = ? &lt;BR /&gt;&lt;BR /&gt;The deadlock occurring:&lt;BR /&gt;&lt;BR /&gt;2015-07-20 16:25:40,247 DEBUG [i.engine.impl.interceptor.CommandContext] (pool-14-thread-2________________) Error while closing command context&lt;BR /&gt;org.apache.ibatis.exceptions.PersistenceException: &lt;BR /&gt;### Error updating database.&amp;nbsp; Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting transaction&lt;BR /&gt;### The error may involve org.activiti.engine.impl.persistence.entity.ExecutionEntity.clearProcessInstanceLockTime-Inline&lt;BR /&gt;### The error occurred while setting parameters&lt;BR /&gt;### SQL: update ACT_RU_EXECUTION&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LOCK_TIME_ = null&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; where ID_ = ?&lt;BR /&gt;### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting transaction&lt;BR /&gt; at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:23)&lt;BR /&gt; at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:150)&lt;BR /&gt; at org.activiti.engine.impl.db.DbSqlSession.update(DbSqlSession.java:180)&lt;BR /&gt; at org.activiti.engine.impl.persistence.entity.ExecutionEntityManager.clearProcessInstanceLockTime(ExecutionEntityManager.java:212)&lt;BR /&gt; at org.activiti.engine.impl.cmd.UnlockExclusiveJobCmd.execute(UnlockExclusiveJobCmd.java:55)&lt;BR /&gt; at org.activiti.engine.impl.interceptor.CommandInvoker.execute(CommandInvoker.java:24)&lt;BR /&gt; at org.activiti.engine.impl.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:57)&lt;BR /&gt; at org.activiti.engine.impl.interceptor.JtaTransactionInterceptor.execute(JtaTransactionInterceptor.java:65)&lt;BR /&gt; at org.activiti.engine.impl.interceptor.LogInterceptor.execute(LogInterceptor.java:37)&lt;BR /&gt; at org.activiti.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:40)&lt;BR /&gt; at org.activiti.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:35)&lt;BR /&gt; at org.activiti.engine.impl.asyncexecutor.ExecuteAsyncRunnable.run(ExecuteAsyncRunnable.java:97)&lt;BR /&gt; at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)&lt;BR /&gt; at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)&lt;BR /&gt; at java.lang.Thread.run(Thread.java:745)&lt;BR /&gt;Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting transaction&lt;BR /&gt; at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)&lt;BR /&gt; at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)&lt;BR /&gt; at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)&lt;BR /&gt; at java.lang.reflect.Constructor.newInstance(Constructor.java:408)&lt;BR /&gt; at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)&lt;BR /&gt; at com.mysql.jdbc.Util.getInstance(Util.java:386)&lt;BR /&gt; at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1066)&lt;BR /&gt; at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4237)&lt;BR /&gt; at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4169)&lt;BR /&gt; at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2617)&lt;BR /&gt; at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2778)&lt;BR /&gt; at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2834)&lt;BR /&gt; at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2156)&lt;BR /&gt; at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1379)&lt;BR /&gt; at com.mysql.jdbc.jdbc2.optional.PreparedStatementWrapper.execute(PreparedStatementWrapper.java:822)&lt;BR /&gt; at org.jboss.resource.adapter.jdbc.WrappedPreparedStatement.execute(WrappedPreparedStatement.java:299)&lt;BR /&gt; at sun.reflect.GeneratedMethodAccessor931.invoke(Unknown Source)&lt;BR /&gt; at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)&lt;BR /&gt; at java.lang.reflect.Method.invoke(Method.java:483)&lt;BR /&gt; at org.apache.ibatis.logging.jdbc.PreparedStatementLogger.invoke(PreparedStatementLogger.java:55)&lt;BR /&gt; at com.sun.proxy.$Proxy778.execute(Unknown Source)&lt;BR /&gt; at org.apache.ibatis.executor.statement.PreparedStatementHandler.update(PreparedStatementHandler.java:41)&lt;BR /&gt; at org.apache.ibatis.executor.statement.RoutingStatementHandler.update(RoutingStatementHandler.java:66)&lt;BR /&gt; at org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:45)&lt;BR /&gt; at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:100)&lt;BR /&gt; at org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:75)&lt;BR /&gt; at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:148)&lt;BR /&gt; … 13 more&lt;BR /&gt;2015-07-20 16:25:40,250 DEBUG [i.engine.impl.interceptor.LogInterceptor] (pool-14-thread-2________________) — UnlockExclusiveJobCmd finished ——————————————————–&lt;BR /&gt;2015-07-20 16:25:40,250 DEBUG [i.engine.impl.interceptor.LogInterceptor] (pool-14-thread-2________________) &lt;BR /&gt;2015-07-20 16:25:40,250 ERROR [.impl.asyncexecutor.ExecuteAsyncRunnable] (pool-14-thread-2________________) Error while unlocking exclusive job 110543&lt;BR /&gt;org.apache.ibatis.exceptions.PersistenceException: &lt;BR /&gt;[identical stack trace logged again]&lt;BR /&gt;2015-07-20 16:25:40,494 DEBUG [org.activiti.engine.impl.db.DbSqlSession] (________________pool-14-thread-1) executing: delete JobEntity [id=110545]&lt;BR /&gt;2015-07-20 16:25:40,496 DEBUG [pl.jobexecutor.AsyncJobAddedNotification] (________________pool-14-thread-1) notifying job executor of new job&lt;BR /&gt;2015-07-20 16:25:40,496 DEBUG [i.engine.impl.interceptor.LogInterceptor] (________________pool-14-thread-1) — ExecuteAsyncJobCmd finished ——————————————————–&lt;BR /&gt;2015-07-20 16:25:40,496 DEBUG [i.engine.impl.interceptor.LogInterceptor] (pool-14-thread-2________________) &lt;BR /&gt;&lt;BR /&gt;&lt;/CODE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 20 Jul 2015 17:55:51 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/deadlock-causing-transaction-corruption-and-breaking-async/m-p/184663#M137793</guid>
      <dc:creator>grahamjohnson80</dc:creator>
      <dc:date>2015-07-20T17:55:51Z</dc:date>
    </item>
    <item>
      <title>Re: Deadlock causing transaction corruption and breaking async executor</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/deadlock-causing-transaction-corruption-and-breaking-async/m-p/184664#M137794</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;&amp;gt; Shouldn't the async executor wait until the UnlockExclusiveJobCmd has been committed before sending the AsyncJobAddedNotification &amp;gt; that allows another thread to start the new job and access/update the same execution row that the current thread still needs to update &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;gt;(to clear the lock time)? Or is the current behavior by design?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The UnlockExclusiveJobCmd is executed in its own transaction (passed to the commandExecutor), and the AsyncJobAddedNotification is similarly hooked into the COMITTED listener of the insert transaction. So unless I'm missing something, that seems fine. Or how do you see it?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;See &lt;/SPAN&gt;&lt;A href="https://github.com/Activiti/Activiti/blob/master/modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/entity/JobEntityManager.java#L105" rel="nofollow noopener noreferrer"&gt;https://github.com/Activiti/Activiti/blob/master/modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/entity/JobEntityManager.java#L105&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;gt; Why are some jobs non-exclusive when I expect all jobs to be exclusive? How can I correct this?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;All jobs are by default exclusive. I can't explain why they would not be for you. Which kind of jobs are exclusive?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;gt; If the second job were exclusive, would it then run serially on the same thread as the job that created it instead of on the other thread? &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;gt; Or would it still be picked up by the other thread, but not deadlock due to it locking the execution before executing?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Jobs are always executed by different threads, no reuse there. The exclusive flag comes into play before the job is exectuted: it tries to lock the process instance, and only one can succeed in this.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Furthermore: what happens with the failing job when the deadlock occurs? It should be retried later on automatically. What happens in that case. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;We did add some more logic around the locking in the current 5.18 branch, so fingers crossed there (but dont get your hopes up yet), cause from the logs I can't quite deduce why it would deadlock in that case.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 23 Jul 2015 12:54:06 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/deadlock-causing-transaction-corruption-and-breaking-async/m-p/184664#M137794</guid>
      <dc:creator>jbarrez</dc:creator>
      <dc:date>2015-07-23T12:54:06Z</dc:date>
    </item>
    <item>
      <title>Re: Deadlock causing transaction corruption and breaking async executor</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/deadlock-causing-transaction-corruption-and-breaking-async/m-p/184665#M137795</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;By "Shouldn't the async executor wait until the UnlockExclusiveJobCmd has been committed before sending the AsyncJobAddedNotification",&amp;nbsp; I was not suggesting that these were currently done in the same transaction (I know they aren't), but rather that I think the behavior should be changed so that the first job completely finishes, &amp;lt;i&amp;gt;including unlocking&amp;lt;/i&amp;gt; (if required), &amp;lt;b&amp;gt;before&amp;lt;/b&amp;gt; the notification is sent about the new job, so that the new job will not run concurrently with the unlocking of the first job and cause a deadlock.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;Jobs are always executed by different threads, no reuse there. The exclusive flag comes into play before the job is exectuted: it tries to lock the process instance, and only one can succeed in this.&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;SPAN&gt;The user guide says "Instead, it will make sure that whenever it acquires an exclusive job from a certain process instance, it acquires all other exclusive jobs from the same process instance and delegates them to the same worker thread." which is why I thought if both jobs are exclusive they will run on the same thread (and thus sequentially instead of concurrently).&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;Furthermore: what happens with the failing job when the deadlock occurs? It should be retried later on automatically. What happens in that case.&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;SPAN&gt;I believe that since it is just the final unlocking step of the job, and not the job execution itself,&amp;nbsp; that deadlocks and is rolled back, the job itself is not marked as having failed and nothing (including the unlocking) is retried.&amp;nbsp; However, based on your question, I took another look at our logs and found that the LOCK_TIME_ is actually set to NULL while the first job is executing, before the UnlockExclusiveJobCmd is run.&amp;nbsp; Here is more complete log output of just the one thread (from the same run as above) showing this:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;CODE&gt;&lt;BR /&gt;2015-07-20 16:25:40,197 DEBUG [i.engine.impl.interceptor.LogInterceptor] (pool-14-thread-2) &lt;BR /&gt;2015-07-20 16:25:40,197 DEBUG [i.engine.impl.interceptor.LogInterceptor] (pool-14-thread-2) — starting LockExclusiveJobCmd ——————————————————–&lt;BR /&gt;2015-07-20 16:25:40,197 DEBUG [pl.interceptor.JtaTransactionInterceptor] (pool-14-thread-2) Running command with propagation REQUIRED&lt;BR /&gt;2015-07-20 16:25:40,197 DEBUG [viti.engine.impl.cmd.LockExclusiveJobCmd] (pool-14-thread-2) Executing lock exclusive job 110543 110490&lt;BR /&gt;2015-07-20 16:25:40,197 DEBUG [e.entity.ExecutionEntity.selectExecution] (pool-14-thread-2) ooo Using Connection [org.jboss.resource.adapter.jdbc.jdk6.WrappedConnectionJDK6@59ca5b26]&lt;BR /&gt;2015-07-20 16:25:40,197 DEBUG [e.entity.ExecutionEntity.selectExecution] (pool-14-thread-2) ==&amp;gt;&amp;nbsp; Preparing: select * from ACT_RU_EXECUTION where ID_ = ? &lt;BR /&gt;2015-07-20 16:25:40,197 DEBUG [e.entity.ExecutionEntity.selectExecution] (pool-14-thread-2) ==&amp;gt; Parameters: 110490(String)&lt;BR /&gt;2015-07-20 16:25:40,198 TRACE [e.entity.ExecutionEntity.selectExecution] (pool-14-thread-2) &amp;lt;==&amp;nbsp;&amp;nbsp;&amp;nbsp; Columns: ID_, REV_, PROC_INST_ID_, BUSINESS_KEY_, PARENT_ID_, PROC_DEF_ID_, SUPER_EXEC_, ACT_ID_, IS_ACTIVE_, IS_CONCURRENT_, IS_SCOPE_, IS_EVENT_SCOPE_, SUSPENSION_STATE_, CACHED_ENT_STATE_, TENANT_ID_, NAME_, LOCK_TIME_&lt;BR /&gt;2015-07-20 16:25:40,198 TRACE [e.entity.ExecutionEntity.selectExecution] (pool-14-thread-2) &amp;lt;==&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Row: 110490, 5, 110490, [omitted], null, [omitted]:4:97630, null, [omitted], 1, 0, 1, 0, 1, 4, [omitted], null, null&lt;BR /&gt;2015-07-20 16:25:40,198 DEBUG [e.entity.ExecutionEntity.selectExecution] (pool-14-thread-2) &amp;lt;==&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Total: 1&lt;BR /&gt;2015-07-20 16:25:40,198 DEBUG [tionEntity.updateProcessInstanceLockTime] (pool-14-thread-2) ooo Using Connection [org.jboss.resource.adapter.jdbc.jdk6.WrappedConnectionJDK6@59ca5b26]&lt;BR /&gt;&lt;BR /&gt;# Execution row gets locked:&lt;BR /&gt;&lt;BR /&gt;2015-07-20 16:25:40,198 DEBUG [tionEntity.updateProcessInstanceLockTime] (pool-14-thread-2) ==&amp;gt;&amp;nbsp; Preparing: update ACT_RU_EXECUTION set LOCK_TIME_ = ? where ID_ = ? and (LOCK_TIME_ is null OR LOCK_TIME_ &amp;lt;= ?) &lt;BR /&gt;2015-07-20 16:25:40,198 DEBUG [tionEntity.updateProcessInstanceLockTime] (pool-14-thread-2) ==&amp;gt; Parameters: 2015-07-20 16:30:40.198(Timestamp), 110490(String), 2015-07-20 16:25:40.198(Timestamp)&lt;BR /&gt;2015-07-20 16:25:40,199 DEBUG [tionEntity.updateProcessInstanceLockTime] (pool-14-thread-2) &amp;lt;==&amp;nbsp;&amp;nbsp;&amp;nbsp; Updates: 1&lt;BR /&gt;2015-07-20 16:25:40,199 TRACE [org.activiti.engine.impl.db.DbSqlSession] (pool-14-thread-2) loaded object 'ProcessInstance[110490]' was not updated&lt;BR /&gt;2015-07-20 16:25:40,199 DEBUG [org.activiti.engine.impl.db.DbSqlSession] (pool-14-thread-2) flush summary: 0 insert, 0 update, 0 delete.&lt;BR /&gt;2015-07-20 16:25:40,199 DEBUG [org.activiti.engine.impl.db.DbSqlSession] (pool-14-thread-2) now executing flush…&lt;BR /&gt;2015-07-20 16:25:40,199 DEBUG [i.engine.impl.interceptor.LogInterceptor] (pool-14-thread-2) — LockExclusiveJobCmd finished ——————————————————–&lt;BR /&gt;2015-07-20 16:25:40,199 DEBUG [i.engine.impl.interceptor.LogInterceptor] (pool-14-thread-2) &lt;BR /&gt;2015-07-20 16:25:40,199 DEBUG [i.engine.impl.interceptor.LogInterceptor] (pool-14-thread-2) &lt;BR /&gt;2015-07-20 16:25:40,199 DEBUG [i.engine.impl.interceptor.LogInterceptor] (pool-14-thread-2) — starting ExecuteAsyncJobCmd ——————————————————–&lt;BR /&gt;2015-07-20 16:25:40,199 DEBUG [pl.interceptor.JtaTransactionInterceptor] (pool-14-thread-2) Running command with propagation REQUIRED&lt;BR /&gt;2015-07-20 16:25:40,199 DEBUG [iviti.engine.impl.cmd.ExecuteAsyncJobCmd] (pool-14-thread-2) Executing async job 110543&lt;BR /&gt;2015-07-20 16:25:40,200 DEBUG [e.entity.ExecutionEntity.selectExecution] (pool-14-thread-2) ooo Using Connection [org.jboss.resource.adapter.jdbc.jdk6.WrappedConnectionJDK6@66c7f0a1]&lt;BR /&gt;2015-07-20 16:25:40,200 DEBUG [e.entity.ExecutionEntity.selectExecution] (pool-14-thread-2) ==&amp;gt;&amp;nbsp; Preparing: select * from ACT_RU_EXECUTION where ID_ = ? &lt;BR /&gt;2015-07-20 16:25:40,200 DEBUG [e.entity.ExecutionEntity.selectExecution] (pool-14-thread-2) ==&amp;gt; Parameters: 110490(String)&lt;BR /&gt;&lt;BR /&gt;# The execution row is indeed locked:&lt;BR /&gt;&lt;BR /&gt;2015-07-20 16:25:40,200 TRACE [e.entity.ExecutionEntity.selectExecution] (pool-14-thread-2) &amp;lt;==&amp;nbsp;&amp;nbsp;&amp;nbsp; Columns: ID_, REV_, PROC_INST_ID_, BUSINESS_KEY_, PARENT_ID_, PROC_DEF_ID_, SUPER_EXEC_, ACT_ID_, IS_ACTIVE_, IS_CONCURRENT_, IS_SCOPE_, IS_EVENT_SCOPE_, SUSPENSION_STATE_, CACHED_ENT_STATE_, TENANT_ID_, NAME_, LOCK_TIME_&lt;BR /&gt;2015-07-20 16:25:40,200 TRACE [e.entity.ExecutionEntity.selectExecution] (pool-14-thread-2) &amp;lt;==&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Row: 110490, 5, 110490, [omitted], null, [omitted]:4:97630, null, [omitted], 1, 0, 1, 0, 1, 4, [omitted], null, 2015-07-20 16:30:40.0&lt;BR /&gt;&lt;BR /&gt;# A bunch of job execution inserts/updates omitted here…&lt;BR /&gt;&lt;BR /&gt;2015-07-20 16:25:40,216 DEBUG [org.activiti.engine.impl.db.DbSqlSession] (pool-14-thread-2) inserting: JobEntity [id=110545]&lt;BR /&gt;2015-07-20 16:25:40,216 DEBUG [rsistence.entity.JobEntity.insertMessage] (pool-14-thread-2) ooo Using Connection [org.jboss.resource.adapter.jdbc.jdk6.WrappedConnectionJDK6@66c7f0a1]&lt;BR /&gt;2015-07-20 16:25:40,216 DEBUG [rsistence.entity.JobEntity.insertMessage] (pool-14-thread-2) ==&amp;gt;&amp;nbsp; Preparing: insert into ACT_RU_JOB ( ID_, REV_, TYPE_, LOCK_OWNER_, LOCK_EXP_TIME_, EXCLUSIVE_, EXECUTION_ID_, PROCESS_INSTANCE_ID_, PROC_DEF_ID_, DUEDATE_, RETRIES_, EXCEPTION_STACK_ID_, EXCEPTION_MSG_, HANDLER_TYPE_, HANDLER_CFG_, TENANT_ID_) values (?, 1, 'message', ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ) &lt;BR /&gt;2015-07-20 16:25:40,216 DEBUG [rsistence.entity.JobEntity.insertMessage] (pool-14-thread-2) ==&amp;gt; Parameters: 110545(String), null, null, false(Boolean), 110490(String), 110490(String), [omitted]:4:97630(String), 2015-07-20 16:30:40.214(Timestamp), 3(Integer), null, null, async-continuation(String), null, [omitted](String)&lt;BR /&gt;2015-07-20 16:25:40,216 DEBUG [rsistence.entity.JobEntity.insertMessage] (pool-14-thread-2) &amp;lt;==&amp;nbsp;&amp;nbsp;&amp;nbsp; Updates: 1&lt;BR /&gt;2015-07-20 16:25:40,216 DEBUG [org.activiti.engine.impl.db.DbSqlSession] (pool-14-thread-2) updating: ProcessInstance[110490]&lt;BR /&gt;2015-07-20 16:25:40,216 DEBUG [e.entity.ExecutionEntity.updateExecution] (pool-14-thread-2) ooo Using Connection [org.jboss.resource.adapter.jdbc.jdk6.WrappedConnectionJDK6@66c7f0a1]&lt;BR /&gt;&lt;BR /&gt;# Still during job execution, the execution row lock time gets set to NULL here (note the "null" 3rd-to-last parameter to the following update):&lt;BR /&gt;&lt;BR /&gt;2015-07-20 16:25:40,216 DEBUG [e.entity.ExecutionEntity.updateExecution] (pool-14-thread-2) ==&amp;gt;&amp;nbsp; Preparing: update ACT_RU_EXECUTION set REV_ = ?, BUSINESS_KEY_ = ?, PROC_DEF_ID_ = ?, ACT_ID_ = ?, IS_ACTIVE_ = ?, IS_CONCURRENT_ = ?, IS_SCOPE_ = ?, IS_EVENT_SCOPE_ = ?, PARENT_ID_ = ?, SUPER_EXEC_ = ?, SUSPENSION_STATE_ = ?, CACHED_ENT_STATE_ = ?, NAME_ = ?, LOCK_TIME_ = ? where ID_ = ? and REV_ = ? &lt;BR /&gt;2015-07-20 16:25:40,216 DEBUG [e.entity.ExecutionEntity.updateExecution] (pool-14-thread-2) ==&amp;gt; Parameters: 6(Integer), [omitted](String), [omitted]:4:97630(String), [omitted](String), true(Boolean), false(Boolean), true(Boolean), false(Boolean), null, null, 1(Integer), 4(Integer), null, null, 110490(String), 5(Integer)&lt;BR /&gt;2015-07-20 16:25:40,217 DEBUG [e.entity.ExecutionEntity.updateExecution] (pool-14-thread-2) &amp;lt;==&amp;nbsp;&amp;nbsp;&amp;nbsp; Updates: 1&lt;BR /&gt;2015-07-20 16:25:40,217 DEBUG [org.activiti.engine.impl.db.DbSqlSession] (pool-14-thread-2) executing: delete JobEntity [id=110543]&lt;BR /&gt;2015-07-20 16:25:40,217 DEBUG [rsistence.entity.JobEntity.deleteMessage] (pool-14-thread-2) ooo Using Connection [org.jboss.resource.adapter.jdbc.jdk6.WrappedConnectionJDK6@66c7f0a1]&lt;BR /&gt;2015-07-20 16:25:40,217 DEBUG [rsistence.entity.JobEntity.deleteMessage] (pool-14-thread-2) ==&amp;gt;&amp;nbsp; Preparing: delete from ACT_RU_JOB where ID_ = ? and REV_ = ? &lt;BR /&gt;2015-07-20 16:25:40,217 DEBUG [rsistence.entity.JobEntity.deleteMessage] (pool-14-thread-2) ==&amp;gt; Parameters: 110543(String), 1(Integer)&lt;BR /&gt;2015-07-20 16:25:40,217 DEBUG [rsistence.entity.JobEntity.deleteMessage] (pool-14-thread-2) &amp;lt;==&amp;nbsp;&amp;nbsp;&amp;nbsp; Updates: 1&lt;BR /&gt;2015-07-20 16:25:40,221 DEBUG [pl.jobexecutor.AsyncJobAddedNotification] (pool-14-thread-2) notifying job executor of new job&lt;BR /&gt;2015-07-20 16:25:40,232 DEBUG [i.engine.impl.interceptor.LogInterceptor] (pool-14-thread-2) — ExecuteAsyncJobCmd finished ——————————————————–&lt;BR /&gt;2015-07-20 16:25:40,232 DEBUG [i.engine.impl.interceptor.LogInterceptor] (pool-14-thread-2) &lt;BR /&gt;2015-07-20 16:25:40,232 DEBUG [i.engine.impl.interceptor.LogInterceptor] (pool-14-thread-2) &lt;BR /&gt;2015-07-20 16:25:40,232 DEBUG [i.engine.impl.interceptor.LogInterceptor] (pool-14-thread-2) — starting UnlockExclusiveJobCmd ——————————————————–&lt;BR /&gt;2015-07-20 16:25:40,232 DEBUG [pl.interceptor.JtaTransactionInterceptor] (pool-14-thread-2) Running command with propagation REQUIRED&lt;BR /&gt;2015-07-20 16:25:40,232 DEBUG [ti.engine.impl.cmd.UnlockExclusiveJobCmd] (pool-14-thread-2) Unlocking exclusive job 110543&lt;BR /&gt;2015-07-20 16:25:40,233 DEBUG [e.entity.ExecutionEntity.selectExecution] (pool-14-thread-2) ooo Using Connection [org.jboss.resource.adapter.jdbc.jdk6.WrappedConnectionJDK6@4f4f0d49]&lt;BR /&gt;2015-07-20 16:25:40,233 DEBUG [e.entity.ExecutionEntity.selectExecution] (pool-14-thread-2) ==&amp;gt;&amp;nbsp; Preparing: select * from ACT_RU_EXECUTION where ID_ = ? &lt;BR /&gt;2015-07-20 16:25:40,233 DEBUG [e.entity.ExecutionEntity.selectExecution] (pool-14-thread-2) ==&amp;gt; Parameters: 110490(String)&lt;BR /&gt;&lt;BR /&gt;# The execution row is already unlocked:&lt;BR /&gt;&lt;BR /&gt;2015-07-20 16:25:40,234 TRACE [e.entity.ExecutionEntity.selectExecution] (pool-14-thread-2) &amp;lt;==&amp;nbsp;&amp;nbsp;&amp;nbsp; Columns: ID_, REV_, PROC_INST_ID_, BUSINESS_KEY_, PARENT_ID_, PROC_DEF_ID_, SUPER_EXEC_, ACT_ID_, IS_ACTIVE_, IS_CONCURRENT_, IS_SCOPE_, IS_EVENT_SCOPE_, SUSPENSION_STATE_, CACHED_ENT_STATE_, TENANT_ID_, NAME_, LOCK_TIME_&lt;BR /&gt;2015-07-20 16:25:40,234 TRACE [e.entity.ExecutionEntity.selectExecution] (pool-14-thread-2) &amp;lt;==&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Row: 110490, 6, 110490, [omitted], null, [omitted]:4:97630, null, [omitted], 1, 0, 1, 0, 1, 4, [omitted], null, null&lt;BR /&gt;2015-07-20 16:25:40,234 DEBUG [e.entity.ExecutionEntity.selectExecution] (pool-14-thread-2) &amp;lt;==&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Total: 1&lt;BR /&gt;2015-07-20 16:25:40,234 DEBUG [utionEntity.clearProcessInstanceLockTime] (pool-14-thread-2) ooo Using Connection [org.jboss.resource.adapter.jdbc.jdk6.WrappedConnectionJDK6@4f4f0d49]&lt;BR /&gt;&lt;BR /&gt;# But we try to unlock it anyway:&lt;BR /&gt;&lt;BR /&gt;2015-07-20 16:25:40,234 DEBUG [utionEntity.clearProcessInstanceLockTime] (pool-14-thread-2) ==&amp;gt;&amp;nbsp; Preparing: update ACT_RU_EXECUTION set LOCK_TIME_ = null where ID_ = ? &lt;BR /&gt;2015-07-20 16:25:40,234 DEBUG [utionEntity.clearProcessInstanceLockTime] (pool-14-thread-2) ==&amp;gt; Parameters: 110490(String)&lt;BR /&gt;&lt;BR /&gt;# And the deadlock happens (because of the concurrent ACT_RU_EXECUTION update from job 110545 on the other thread):&lt;BR /&gt;&lt;BR /&gt;2015-07-20 16:25:40,247 DEBUG [i.engine.impl.interceptor.CommandContext] (pool-14-thread-2) Error while closing command context&lt;BR /&gt;org.apache.ibatis.exceptions.PersistenceException: &lt;BR /&gt;### Error updating database.&amp;nbsp; Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting transaction&lt;BR /&gt;### The error may involve org.activiti.engine.impl.persistence.entity.ExecutionEntity.clearProcessInstanceLockTime-Inline&lt;BR /&gt;### The error occurred while setting parameters&lt;BR /&gt;### SQL: update ACT_RU_EXECUTION&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LOCK_TIME_ = null&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; where ID_ = ?&lt;BR /&gt;### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting transaction&lt;BR /&gt;[…]&lt;BR /&gt;&lt;BR /&gt;&lt;/CODE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;So even though the unlocking is rolled back, it apparently doesn't matter because the ACT_RU_EXECUTION has already been (inadvertantly?) unlocked.&amp;nbsp; Is that a bug?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;There don't seem to be any functional problems caused by the deadlock, but 1. the stack traces clutter our logs, 2. our logging automatically emails any logged errors for us to look at and fix (so we have to go to extra steps to filter these out), and 3. the deadlock info overwrites any previous deadlock info in "SHOW ENGINE INNODB STATUS" output so if we were to have other unrelated deadlocks, we would lose important debugging info (unless we go to extra steps to try to capture deadlock info as soon as they happen).&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;All jobs are by default exclusive. I can't explain why they would not be for you. Which kind of jobs are exclusive?&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;SPAN&gt;I don't know how to answer this since I'm not sure what the different kinds of job are, but I will try running it in the debugger to try to figure out where the exclusive = false is coming from.&amp;nbsp; Please stay tuned…&lt;/SPAN&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 23 Jul 2015 16:54:13 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/deadlock-causing-transaction-corruption-and-breaking-async/m-p/184665#M137795</guid>
      <dc:creator>grahamjohnson80</dc:creator>
      <dc:date>2015-07-23T16:54:13Z</dc:date>
    </item>
    <item>
      <title>Re: Deadlock causing transaction corruption and breaking async executor</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/deadlock-causing-transaction-corruption-and-breaking-async/m-p/184666#M137796</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Okay, I figured out that the non-exclusive jobs I am getting come from the fact that &lt;/SPAN&gt;&lt;A href="https://github.com/Activiti/Activiti/blob/master/modules/activiti-engine/src/main/java/org/activiti/engine/impl/bpmn/parser/handler/CallActivityParseHandler.java" rel="nofollow noopener noreferrer"&gt;https://github.com/Activiti/Activiti/blob/master/modules/activiti-engine/src/main/java/org/activiti/engine/impl/bpmn/parser/handler/CallActivityParseHandler.java&lt;/A&gt;&lt;SPAN&gt; does not have a call to activity.setExclusive(), and the default value for ActivityImpl.isExclusive is false.&amp;nbsp; Contrast that to &lt;/SPAN&gt;&lt;A href="https://github.com/Activiti/Activiti/blob/master/modules/activiti-engine/src/main/java/org/activiti/engine/impl/bpmn/parser/handler/SubProcessParseHandler.java#L40" rel="nofollow noopener noreferrer"&gt;https://github.com/Activiti/Activiti/blob/master/modules/activiti-engine/src/main/java/org/activiti/engine/impl/bpmn/parser/handler/SubProcessParseHandler.java#L40&lt;/A&gt;&lt;SPAN&gt; which (like most other AbstractActivityBpmnParseHandler subclasses) does have a call to activity.setExclusive(!subProcess.isNotExclusive()) that propagates the Activiti.notExclusive value into the ActivityImpl instance.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Is it intentional that CallActivity jobs are non-exclusive?&amp;nbsp; Shouldn't the default value for ActivityImpl.isExclusive be true instead of false?&amp;nbsp; I don't see anything in the user guide (&lt;/SPAN&gt;&lt;A href="http://www.activiti.org/userguide/#bpmnSubprocessAndCallActivity" rel="nofollow noopener noreferrer"&gt;http://www.activiti.org/userguide/#bpmnSubprocessAndCallActivity&lt;/A&gt;&lt;SPAN&gt;) indicating there should be any difference between CallActivity and SubProcess regarding exclusivity.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;To summarize, I am seeing three possible Activiti bugs contributing to the deadlocks:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;1. AsyncJobAddedNotification is sent too soon for jobs created by exclusive jobs (i.e. before job/execution is unlocked in UnlockExclusiveJobCmd)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;2. Execution seems to be unadvertantly unlocked too soon (i.e. before UnlockExclusiveJobCmd even runs)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;3. CallActivity.notExclusive is not propagated to ActivitiImpl.isExclusive in CallActivityParseHandler&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;For #3, I am trying overriding CallActivityParseHandler with a version that includes a call to activity.setExclusive(!callActivity.isNotExclusive()).&amp;nbsp; I'm skeptical that that alone will prevent the deadlock (because of the other two issues), but I will report back on whether it does.&lt;/SPAN&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 23 Jul 2015 20:48:24 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/deadlock-causing-transaction-corruption-and-breaking-async/m-p/184666#M137796</guid>
      <dc:creator>grahamjohnson80</dc:creator>
      <dc:date>2015-07-23T20:48:24Z</dc:date>
    </item>
    <item>
      <title>Re: Deadlock causing transaction corruption and breaking async executor</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/deadlock-causing-transaction-corruption-and-breaking-async/m-p/184667#M137797</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;As an update, we are still getting deadlocks using the modified CallActivityParseHandler as described above, which is not surprising because of the other unresolved issues.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 24 Jul 2015 23:34:08 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/deadlock-causing-transaction-corruption-and-breaking-async/m-p/184667#M137797</guid>
      <dc:creator>grahamjohnson80</dc:creator>
      <dc:date>2015-07-24T23:34:08Z</dc:date>
    </item>
    <item>
      <title>Re: Deadlock causing transaction corruption and breaking async executor</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/deadlock-causing-transaction-corruption-and-breaking-async/m-p/184668#M137798</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;BR /&gt;&lt;SPAN&gt;Point 2:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;gt; So even though the unlocking is rolled back, it apparently doesn't matter because the ACT_RU_EXECUTION has already been (inadvertantly?) &amp;gt; unlocked. Is that a bug?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Combined with " Still during job execution, the execution row lock time gets set to NULL here (note the "null" 3rd-to-last parameter to the following update):"&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;makes me think that this could be a bug that we solved recently. We saw indeed that in some very specific cases the null is written to the execution, while it shouldn't have. That was fixed in this commit: &lt;/SPAN&gt;&lt;A href="https://github.com/Activiti/Activiti/commit/806ac390a63a561759a5995ed24283391e6e8d4d#diff-685807b8b303683cd904442ccc3db107L96" rel="nofollow noopener noreferrer"&gt;https://github.com/Activiti/Activiti/commit/806ac390a63a561759a5995ed24283391e6e8d4d#diff-685807b8b303683cd904442ccc3db107L96&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Point 3:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;You are correct. Fixed it here: &lt;/SPAN&gt;&lt;A href="https://github.com/Activiti/Activiti/commit/ddf24c2d1c7339c10bb6aa6eee1932e78278882b" rel="nofollow noopener noreferrer"&gt;https://github.com/Activiti/Activiti/commit/ddf24c2d1c7339c10bb6aa6eee1932e78278882b&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Point 1: &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;This is the one I'm not sure about. So the notification is sent, and the job gets executed. The first thing that happens is a check whether it's exclusive or not. If so, the locking happens.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If there is a follow up exclusive job, the notification is sent again, but this probably fails on the locking, right.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Note that we added a delay in 5.18 when that happens: &lt;/SPAN&gt;&lt;A href="https://github.com/Activiti/Activiti/commit/806ac390a63a561759a5995ed24283391e6e8d4d#diff-ca23220dcc0f83adf05f5e17ed7e0c5cR98" rel="nofollow noopener noreferrer"&gt;https://github.com/Activiti/Activiti/commit/806ac390a63a561759a5995ed24283391e6e8d4d#diff-ca23220dcc0f83adf05f5e17ed7e0c5cR98&lt;/A&gt;&lt;SPAN&gt;. In previous versions it would keep hitting the db, which might have helped causing the deadlock.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks for the excellent discussion material. It was a long read, but well worth it. I do think we have many fixes already in place for the 5.18 for the stuff you're seeing.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 28 Jul 2015 13:42:18 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/deadlock-causing-transaction-corruption-and-breaking-async/m-p/184668#M137798</guid>
      <dc:creator>jbarrez</dc:creator>
      <dc:date>2015-07-28T13:42:18Z</dc:date>
    </item>
    <item>
      <title>Re: Deadlock causing transaction corruption and breaking async executor</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/deadlock-causing-transaction-corruption-and-breaking-async/m-p/184669#M137799</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi Joram,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks a lot for the response and the bugfix.&amp;nbsp; I believe I have confirmed that the deadlock does not occur in 5.18.0-SNAPSHOT, and for the first time I am seeing ActivitiOptimisticLockingException happening in the logs, along with the locking retry that wasn't happening before.&amp;nbsp; So that's a huge improvement.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;It would be very helpful to know when 5.18.0 might be released though.&amp;nbsp; We are ready to go to production with Activiti now, but we need a version including these two fixes.&amp;nbsp; So I have three options, none of which are ideal:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;1. Run full 5.18.0-SNAPSHOT (not knowing what else is in 5.18.0 that may not be production ready yet or whether there will be any schema changes between now and 5.18.0 release that wouldn't get applied because we already updated schema.version to 5.18.0)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;2. Cherry-pick these two commits on top of activiti-engine 5.17.0 (but I'm not sure what other "many fixes already in place" I would be missing that would make this less usable than 5.18.0-SNAPSHOT)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;3. Wait (how long?) until 5.18.0 is released&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Any suggestions or hints at an expected release date?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;For now I think we're going ahead with option 2 since these two fixes resolve the only issue we have seen so far.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks again…&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 28 Jul 2015 22:53:24 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/deadlock-causing-transaction-corruption-and-breaking-async/m-p/184669#M137799</guid>
      <dc:creator>grahamjohnson80</dc:creator>
      <dc:date>2015-07-28T22:53:24Z</dc:date>
    </item>
    <item>
      <title>Re: Deadlock causing transaction corruption and breaking async executor</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/deadlock-causing-transaction-corruption-and-breaking-async/m-p/184670#M137800</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;We are going to release Activiti 5.18 tomorrow or friday.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Best regards,&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 29 Jul 2015 17:43:55 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/deadlock-causing-transaction-corruption-and-breaking-async/m-p/184670#M137800</guid>
      <dc:creator>trademak</dc:creator>
      <dc:date>2015-07-29T17:43:55Z</dc:date>
    </item>
    <item>
      <title>Re: Deadlock causing transaction corruption and breaking async executor</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/deadlock-causing-transaction-corruption-and-breaking-async/m-p/184671#M137801</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I have experienced some more DB deadlocks while executing UserTasks concurrently (async=true and exclusive=false on tasks, async=true on gateway) testing the current github head Activiti version. I will hold on with more details until the Activiti 5.18 release in case the issues im facing are already fixed there. Error report:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;lt;code&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Exception in thread "1151256610" org.apache.ibatis.exceptions.PersistenceException: &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;### Error updating database.&amp;nbsp; Cause: org.h2.jdbc.JdbcSQLException: Wykryto zakleszczenie. Bieżąca transakcja została wycofana. Szczegóły : "&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Session #4 (user: SA) on thread pool-1-thread-2 is waiting to lock PUBLIC.ACT_RU_JOB while locking PUBLIC.ACT_RU_EXECUTION (exclusive).&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Session #10 (user: SA) on thread 1151256610 is waiting to lock PUBLIC.ACT_RU_EXECUTION while locking PUBLIC.ACT_RU_JOB (exclusive)."&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Deadlock detected. The current transaction was rolled back. Details: "&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Session #4 (user: SA) on thread pool-1-thread-2 is waiting to lock PUBLIC.ACT_RU_JOB while locking PUBLIC.ACT_RU_EXECUTION (exclusive).&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Session #10 (user: SA) on thread 1151256610 is waiting to lock PUBLIC.ACT_RU_EXECUTION while locking PUBLIC.ACT_RU_JOB (exclusive)."; SQL statement:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;update ACT_RU_EXECUTION set&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; REV_ = ?,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BUSINESS_KEY_ = ?,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PROC_DEF_ID_ = ?,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ACT_ID_ = ?,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IS_ACTIVE_ = ?,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IS_CONCURRENT_ = ?,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IS_SCOPE_ = ?,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IS_EVENT_SCOPE_ = ?,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PARENT_ID_ = ?,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SUPER_EXEC_ = ?,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SUSPENSION_STATE_ = ?,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CACHED_ENT_STATE_ = ?,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NAME_ = ?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; where ID_ = ?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; and REV_ = ? [40001-176]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;### The error may involve org.activiti.engine.impl.persistence.entity.ExecutionEntity.updateExecution-Inline&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;### The error occurred while setting parameters&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;### SQL: update ACT_RU_EXECUTION set&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; REV_ = ?,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BUSINESS_KEY_ = ?,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PROC_DEF_ID_ = ?,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ACT_ID_ = ?,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IS_ACTIVE_ = ?,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IS_CONCURRENT_ = ?,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IS_SCOPE_ = ?,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IS_EVENT_SCOPE_ = ?,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PARENT_ID_ = ?,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SUPER_EXEC_ = ?,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SUSPENSION_STATE_ = ?,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CACHED_ENT_STATE_ = ?,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NAME_ = ?&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; where ID_ = ?&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; and REV_ = ?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;### Cause: org.h2.jdbc.JdbcSQLException: Wykryto zakleszczenie. Bieżąca transakcja została wycofana. Szczegóły : "&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Session #4 (user: SA) on thread pool-1-thread-2 is waiting to lock PUBLIC.ACT_RU_JOB while locking PUBLIC.ACT_RU_EXECUTION (exclusive).&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Session #10 (user: SA) on thread 1151256610 is waiting to lock PUBLIC.ACT_RU_EXECUTION while locking PUBLIC.ACT_RU_JOB (exclusive)."&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Deadlock detected. The current transaction was rolled back. Details: "&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Session #4 (user: SA) on thread pool-1-thread-2 is waiting to lock PUBLIC.ACT_RU_JOB while locking PUBLIC.ACT_RU_EXECUTION (exclusive).&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Session #10 (user: SA) on thread 1151256610 is waiting to lock PUBLIC.ACT_RU_EXECUTION while locking PUBLIC.ACT_RU_JOB (exclusive)."; SQL statement:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;update ACT_RU_EXECUTION set&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; REV_ = ?,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BUSINESS_KEY_ = ?,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PROC_DEF_ID_ = ?,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ACT_ID_ = ?,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IS_ACTIVE_ = ?,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IS_CONCURRENT_ = ?,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IS_SCOPE_ = ?,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IS_EVENT_SCOPE_ = ?,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PARENT_ID_ = ?,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SUPER_EXEC_ = ?,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SUSPENSION_STATE_ = ?,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CACHED_ENT_STATE_ = ?,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NAME_ = ?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; where ID_ = ?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; and REV_ = ? [40001-176]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:23)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:150)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; at org.activiti.engine.impl.db.DbSqlSession.flushUpdates(DbSqlSession.java:870)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; at org.activiti.engine.impl.db.DbSqlSession.flush(DbSqlSession.java:611)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; at org.activiti.engine.impl.interceptor.CommandContext.flushSessions(CommandContext.java:211)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; at org.activiti.engine.impl.interceptor.CommandContext.close(CommandContext.java:137)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; at org.activiti.engine.impl.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:66)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; at org.activiti.engine.impl.interceptor.LogInterceptor.execute(LogInterceptor.java:37)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; at org.activiti.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:40)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; at org.activiti.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:35)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; at org.activiti.engine.impl.TaskServiceImpl.complete(TaskServiceImpl.java:175)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; at TaskCompleter.run(TaskCompleter.java:30)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Caused by: org.h2.jdbc.JdbcSQLException: Wykryto zakleszczenie. Bieżąca transakcja została wycofana. Szczegóły : "&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Session #4 (user: SA) on thread pool-1-thread-2 is waiting to lock PUBLIC.ACT_RU_JOB while locking PUBLIC.ACT_RU_EXECUTION (exclusive).&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Session #10 (user: SA) on thread 1151256610 is waiting to lock PUBLIC.ACT_RU_EXECUTION while locking PUBLIC.ACT_RU_JOB (exclusive)."&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Deadlock detected. The current transaction was rolled back. Details: "&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Session #4 (user: SA) on thread pool-1-thread-2 is waiting to lock PUBLIC.ACT_RU_JOB while locking PUBLIC.ACT_RU_EXECUTION (exclusive).&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Session #10 (user: SA) on thread 1151256610 is waiting to lock PUBLIC.ACT_RU_EXECUTION while locking PUBLIC.ACT_RU_JOB (exclusive)."; SQL statement:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;update ACT_RU_EXECUTION set&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; REV_ = ?,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BUSINESS_KEY_ = ?,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PROC_DEF_ID_ = ?,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ACT_ID_ = ?,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IS_ACTIVE_ = ?,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IS_CONCURRENT_ = ?,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IS_SCOPE_ = ?,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IS_EVENT_SCOPE_ = ?,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PARENT_ID_ = ?,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SUPER_EXEC_ = ?,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SUSPENSION_STATE_ = ?,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CACHED_ENT_STATE_ = ?,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NAME_ = ?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; where ID_ = ?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; and REV_ = ? [40001-176]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; at org.h2.message.DbException.getJdbcSQLException(DbException.java:344)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; at org.h2.message.DbException.get(DbException.java:178)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; at org.h2.message.DbException.get(DbException.java:154)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; at org.h2.table.RegularTable.doLock(RegularTable.java:518)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; at org.h2.table.RegularTable.lock(RegularTable.java:464)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; at org.h2.command.dml.Update.update(Update.java:90)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; at org.h2.command.CommandContainer.update(CommandContainer.java:79)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; at org.h2.command.Command.executeUpdate(Command.java:254)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; at org.h2.jdbc.JdbcPreparedStatement.execute(JdbcPreparedStatement.java:199)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; at java.lang.reflect.Method.invoke(Unknown Source)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; at org.apache.ibatis.logging.jdbc.PreparedStatementLogger.invoke(PreparedStatementLogger.java:55)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; at com.sun.proxy.$Proxy3.execute(Unknown Source)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; at org.apache.ibatis.executor.statement.PreparedStatementHandler.update(PreparedStatementHandler.java:41)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; at org.apache.ibatis.executor.statement.RoutingStatementHandler.update(RoutingStatementHandler.java:66)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; at org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:45)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:100)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; at org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:75)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:148)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; … 10 more&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;lt;/code&amp;gt;&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 03 Aug 2015 11:32:23 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/deadlock-causing-transaction-corruption-and-breaking-async/m-p/184671#M137801</guid>
      <dc:creator>vanquis</dc:creator>
      <dc:date>2015-08-03T11:32:23Z</dc:date>
    </item>
    <item>
      <title>Re: Deadlock causing transaction corruption and breaking async executor</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/deadlock-causing-transaction-corruption-and-breaking-async/m-p/184672#M137802</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I resolved the problem. After switching to the Oracle database deadlocks don't appear any more. However it still doesn't work with the default InMem database. My guess is that h2 locking support is weak and this was the cause.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Regards&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 05 Aug 2015 09:19:09 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/deadlock-causing-transaction-corruption-and-breaking-async/m-p/184672#M137802</guid>
      <dc:creator>vanquis</dc:creator>
      <dc:date>2015-08-05T09:19:09Z</dc:date>
    </item>
  </channel>
</rss>

