<?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 org.activiti.engine.ActivitiOptimisticLockingException: JobEntity in Alfresco Archive</title>
    <link>https://connect.hyland.com/t5/alfresco-archive/org-activiti-engine-activitioptimisticlockingexception-jobentity/m-p/219161#M172291</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi all,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I have 2 Activiti (v5.18) engines instances pointed to the same database. I have a java delegate serviceTask that has async='true'.&amp;nbsp; The java delegate is straighforward as it just inserts a row to an application table. When I test will higher message count, I see this exception below.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="language-java line-numbers"&gt;&lt;CODE&gt;&lt;BR /&gt;org.activiti.engine.ActivitiOptimisticLockingException: JobEntity [id=45926] was updated by another transaction concurrently&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.activiti.engine.impl.db.DbSqlSession$CheckedDeleteOperation.execute(DbSqlSession.java:294)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.activiti.engine.impl.db.DbSqlSession.flushRegularDeletes(DbSqlSession.java:921)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.activiti.engine.impl.db.DbSqlSession.flushDeletes(DbSqlSession.java:887)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.activiti.engine.impl.db.DbSqlSession.flush(DbSqlSession.java:612)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.activiti.engine.impl.interceptor.CommandContext.flushSessions(CommandContext.java:211)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.activiti.engine.impl.interceptor.CommandContext.close(CommandContext.java:137)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.activiti.engine.impl.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:66)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.activiti.spring.SpringTransactionInterceptor$1.doInTransaction(SpringTransactionInterceptor.java:47)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:133)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.activiti.spring.SpringTransactionInterceptor.execute(SpringTransactionInterceptor.java:45)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.activiti.engine.impl.interceptor.LogInterceptor.execute(LogInterceptor.java:31)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.activiti.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:40)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.activiti.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:35)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.activiti.engine.impl.asyncexecutor.ExecuteAsyncRunnable.run(ExecuteAsyncRunnable.java:69)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at java.lang.Thread.run(Thread.java:745)&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;/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;BR /&gt;&lt;SPAN&gt;I understand the async step creates a job and the job is executed on a separate thread, but this is causing duplicate insertions into the app table. For example when I test with 50 messages, I see this exception in the log and sometimes 62 rows in the app table. The count on the ACT_HI_PROCINST is still 50 though. Can someone please explain what is going on and how to handle this?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Clement&lt;/SPAN&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 08 Dec 2015 22:54:30 GMT</pubDate>
    <dc:creator>soaguy</dc:creator>
    <dc:date>2015-12-08T22:54:30Z</dc:date>
    <item>
      <title>org.activiti.engine.ActivitiOptimisticLockingException: JobEntity</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/org-activiti-engine-activitioptimisticlockingexception-jobentity/m-p/219161#M172291</link>
      <description>Hi all,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I have 2 Activiti (v5.18) engines instances pointed to the same database. I have a java delegate serviceTask that has async='true'.&amp;nbsp; The java delegate is straighforward as it just inserts a row to an application table. When I test will higher message count, I see this exception below</description>
      <pubDate>Tue, 08 Dec 2015 22:54:30 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/org-activiti-engine-activitioptimisticlockingexception-jobentity/m-p/219161#M172291</guid>
      <dc:creator>soaguy</dc:creator>
      <dc:date>2015-12-08T22:54:30Z</dc:date>
    </item>
    <item>
      <title>Re: org.activiti.engine.ActivitiOptimisticLockingException: JobEntity</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/org-activiti-engine-activitioptimisticlockingexception-jobentity/m-p/219162#M172292</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;That probably means the javadelegate logic you have is not transactional?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;When an exception occurs, Activiti does a roll back of the transaction, if your jdbc code is not part of that transaction, then it doesn't know it has to roll back.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 10 Dec 2015 18:19:04 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/org-activiti-engine-activitioptimisticlockingexception-jobentity/m-p/219162#M172292</guid>
      <dc:creator>jbarrez</dc:creator>
      <dc:date>2015-12-10T18:19:04Z</dc:date>
    </item>
  </channel>
</rss>

