<?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 deadlock with basic multithreaded usertask test in Alfresco Archive</title>
    <link>https://connect.hyland.com/t5/alfresco-archive/deadlock-with-basic-multithreaded-usertask-test/m-p/146081#M102046</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi, I hope someone can help with a deadlock I am seeing with a basic multithreaded test which interacts with a usertask.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I have a simple process with a single usertask. Attached is maven project if anyone would like to try it out for themselves.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I run N threads each of which start a process instance, get the active task for its process instance, and completes it.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I am using Contiperf to do basic multithreaded load test. With 1 thread all is well.&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;Successfully deployed 'target/classes/bpm/test/activiti/simple/Simple10_usertask.bpmn20.xml'&lt;BR /&gt;bpm.test.activiti.ActivitiTests.testSimple1_usertask&lt;BR /&gt;samples: 1659&lt;BR /&gt;max:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 98&lt;BR /&gt;average: 5.54249547920434&lt;BR /&gt;median:&amp;nbsp; 4&lt;BR /&gt;Rate = 165.30490235153448/s&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;SPAN&gt;However with 2 threads there is deadlock&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;Successfully deployed 'target/classes/bpm/test/activiti/simple/Simple10_usertask.bpmn20.xml'&lt;BR /&gt;bpm.test.activiti.ActivitiTests.testSimple1_usertask&lt;BR /&gt;Dec 19, 2012 10:04:02 AM org.activiti.engine.impl.interceptor.CommandContext close&lt;BR /&gt;SEVERE: Error while closing command context&lt;BR /&gt;org.apache.ibatis.exceptions.PersistenceException: &lt;BR /&gt;### Error updating database.&amp;nbsp; Cause: org.h2.jdbc.JdbcSQLException: Deadlock detected. The current transaction was rolled back. Details: "&lt;BR /&gt;Session #2 (user: SA) is waiting to lock PUBLIC.ACT_RU_TASK while locking PUBLIC.ACT_RU_EXECUTION (exclusive).&lt;BR /&gt;Session #4 (user: SA) is waiting to lock PUBLIC.ACT_RU_EXECUTION while locking PUBLIC.ACT_RU_TASK (exclusive)."; SQL statement:&lt;BR /&gt;delete from ACT_RU_EXECUTION where ID_ = ? and REV_ = ? [40001-132]&lt;BR /&gt;### The error may involve org.activiti.engine.impl.persistence.entity.ExecutionEntity.deleteExecution-Inline&lt;BR /&gt;### The error occurred while setting parameters&lt;BR /&gt;### SQL: delete from ACT_RU_EXECUTION where ID_ = ? and REV_ = ?&lt;BR /&gt;### Cause: org.h2.jdbc.JdbcSQLException: Deadlock detected. The current transaction was rolled back. Details: "&lt;BR /&gt;Session #2 (user: SA) is waiting to lock PUBLIC.ACT_RU_TASK while locking PUBLIC.ACT_RU_EXECUTION (exclusive).&lt;BR /&gt;Session #4 (user: SA) is waiting to lock PUBLIC.ACT_RU_EXECUTION while locking PUBLIC.ACT_RU_TASK (exclusive)."; SQL statement:&lt;BR /&gt;delete from ACT_RU_EXECUTION where ID_ = ? and REV_ = ? [40001-132]&lt;BR /&gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;SPAN&gt;This is code for specific test (the number of threads is specified in the annotation)&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Test&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @PerfTest(duration = 10000, threads = 2)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void testSimple1_usertask() {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Map&amp;lt;String, Object&amp;gt; processParameters = new HashMap&amp;lt;String, Object&amp;gt;();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ProcessInstance processInstance = runtimeService.startProcessInstanceById(simple1_usertask.getId(), processParameters);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Task task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;assertNotNull(task);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;taskService.complete(task.getId());&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(processInstance.getId()).singleResult();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; assertNull(processInstance);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; James&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 19 Dec 2012 10:42:33 GMT</pubDate>
    <dc:creator>jsher</dc:creator>
    <dc:date>2012-12-19T10:42:33Z</dc:date>
    <item>
      <title>deadlock with basic multithreaded usertask test</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/deadlock-with-basic-multithreaded-usertask-test/m-p/146081#M102046</link>
      <description>Hi, I hope someone can help with a deadlock I am seeing with a basic multithreaded test which interacts with a usertask.I have a simple process with a single usertask. Attached is maven project if anyone would like to try it out for themselves.I run N threads each of which start a process instance,</description>
      <pubDate>Wed, 19 Dec 2012 10:42:33 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/deadlock-with-basic-multithreaded-usertask-test/m-p/146081#M102046</guid>
      <dc:creator>jsher</dc:creator>
      <dc:date>2012-12-19T10:42:33Z</dc:date>
    </item>
    <item>
      <title>Re: deadlock with basic multithreaded usertask test</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/deadlock-with-basic-multithreaded-usertask-test/m-p/146082#M102047</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;org.h2.jdbc.JdbcSQLException&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;SPAN&gt;Don't use H2 when you want to to multi-threaded tests. H2 uses a lot of table-locks when only row-locks are needed. H2 is used because of it's speed in testing, but NEVER as production database. I'm confident that the same test won't block on mysql, postgres or any other DB we support.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 19 Dec 2012 15:17:00 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/deadlock-with-basic-multithreaded-usertask-test/m-p/146082#M102047</guid>
      <dc:creator>frederikherema1</dc:creator>
      <dc:date>2012-12-19T15:17:00Z</dc:date>
    </item>
    <item>
      <title>Re: deadlock with basic multithreaded usertask test</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/deadlock-with-basic-multithreaded-usertask-test/m-p/146083#M102048</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Many thanks Frederik. I'll repeat tests with 'real' DB&amp;nbsp; &lt;img id="smileyhappy" class="emoticon emoticon-smileyhappy" src="https://connect.hyland.com/i/smilies/16x16_smiley-happy.png" alt="Smiley Happy" title="Smiley Happy" /&gt;&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 19 Dec 2012 15:45:17 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/deadlock-with-basic-multithreaded-usertask-test/m-p/146083#M102048</guid>
      <dc:creator>jsher</dc:creator>
      <dc:date>2012-12-19T15:45:17Z</dc:date>
    </item>
    <item>
      <title>Re: deadlock with basic multithreaded usertask test</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/deadlock-with-basic-multithreaded-usertask-test/m-p/146084#M102049</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;In h2, use MVCC=true&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 19 Dec 2012 16:21:06 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/deadlock-with-basic-multithreaded-usertask-test/m-p/146084#M102049</guid>
      <dc:creator>meyerd</dc:creator>
      <dc:date>2012-12-19T16:21:06Z</dc:date>
    </item>
    <item>
      <title>Re: deadlock with basic multithreaded usertask test</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/deadlock-with-basic-multithreaded-usertask-test/m-p/146085#M102050</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Thanks Daniel - that worked very nicely.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Regards&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; James&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 19 Dec 2012 17:21:06 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/deadlock-with-basic-multithreaded-usertask-test/m-p/146085#M102050</guid>
      <dc:creator>jsher</dc:creator>
      <dc:date>2012-12-19T17:21:06Z</dc:date>
    </item>
  </channel>
</rss>

