<?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 Concurrent signals to same process instance. in Alfresco Archive</title>
    <link>https://connect.hyland.com/t5/alfresco-archive/concurrent-signals-to-same-process-instance/m-p/235405#M188535</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I have a process that makes heavy use of the camel integration within activiti. I have a process that waits on a receive task for a message to come in via Camel, does some processing on the event, then loops back around to the receive activity and waits for the next message. The activity after the receive event is marked as asynchronous.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;As part of this, I have implemented some behaviour that if the process is not waiting at the receive task (because a message has come in already and is still being processed, retry later. This relies on detecting that the signal() has failed.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;My issue is that when multiple messages come in very close to each other (which is a common scenario), I get the following exception (more than once):&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;&lt;BR /&gt;org.activiti.engine.ActivitiOptimisticLockingException: ByteArrayEntity[id=58975, name=var-camelBody, size=0] was updated by another transaction concurrently&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at org.activiti.engine.impl.db.DbSqlSession.flushUpdates(DbSqlSession.java:779)[193:org.activiti.engine:5.16.3]&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at org.activiti.engine.impl.db.DbSqlSession.flush(DbSqlSession.java:590)[193:org.activiti.engine:5.16.3]&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at org.activiti.engine.impl.interceptor.CommandContext.flushSessions(CommandContext.java:211)[193:org.activiti.engine:5.16.3]&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at org.activiti.engine.impl.interceptor.CommandContext.close(CommandContext.java:137)[193:org.activiti.engine:5.16.3]&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at org.activiti.engine.impl.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:66)[193:org.activiti.engine:5.16.3]&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at org.activiti.engine.impl.interceptor.LogInterceptor.execute(LogInterceptor.java:31)[193:org.activiti.engine:5.16.3]&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at org.activiti.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:40)[193:org.activiti.engine:5.16.3]&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at org.activiti.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:35)[193:org.activiti.engine:5.16.3]&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at org.activiti.engine.impl.RuntimeServiceImpl.signal(RuntimeServiceImpl.java:227)[193:org.activiti.engine:5.16.3]&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at Proxybcddd436_0b02_498d_9638_8c0ea392a730.signal(Unknown Source)[:]&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at org.activiti.camel.ActivitiProducer.signal(ActivitiProducer.java:103)[196:org.activiti.camel:5.16.3]&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at org.activiti.camel.ActivitiProducer.process(ActivitiProducer.java:68)[196:org.activiti.camel:5.16.3]&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61)[74:org.apache.camel.camel-core:2.12.3]&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:398)[74:org.apache.camel.camel-core:2.12.3]&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)[74:org.apache.camel.camel-core:2.12.3]&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at org.apache.camel.processor.MulticastProcessor.doProcessSequential(MulticastProcessor.java:574)[74:org.apache.camel.camel-core:2.12.3]&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at org.apache.camel.processor.MulticastProcessor.doProcessSequential(MulticastProcessor.java:507)[74:org.apache.camel.camel-core:2.12.3]&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at org.apache.camel.processor.MulticastProcessor.process(MulticastProcessor.java:216)[74:org.apache.camel.camel-core:2.12.3]&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at org.apache.camel.processor.RecipientList.sendToRecipientList(RecipientList.java:153)[74:org.apache.camel.camel-core:2.12.3]&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at org.apache.camel.processor.RecipientList.process(RecipientList.java:112)[74:org.apache.camel.camel-core:2.12.3]&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at org.apache.camel.processor.Pipeline.process(Pipeline.java:118)[74:org.apache.camel.camel-core:2.12.3]&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at org.apache.camel.processor.Pipeline.process(Pipeline.java:80)[74:org.apache.camel.camel-core:2.12.3]&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:72)[74:org.apache.camel.camel-core:2.12.3]&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:398)[74:org.apache.camel.camel-core:2.12.3]&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)[74:org.apache.camel.camel-core:2.12.3]&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at org.apache.camel.processor.Pipeline.process(Pipeline.java:118)[74:org.apache.camel.camel-core:2.12.3]&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at org.apache.camel.processor.Pipeline.process(Pipeline.java:80)[74:org.apache.camel.camel-core:2.12.3]&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)[74:org.apache.camel.camel-core:2.12.3]&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:105)[74:org.apache.camel.camel-core:2.12.3]&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:87)[74:org.apache.camel.camel-core:2.12.3]&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;/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;The behaviour I'm looking for is that it is the same as if the messages were a time apart - the first message get processed, and if it hasn't returned to the receive event, have an easily detectable way of handling that.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Do you have any advice on how I could achieve this?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I've tried catching the ActivitiOptimisticLockingException on the camel end, but it sometimes is thrown on the first message, so my process only gets the second or third message.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Regards,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Michael Hanrahan&lt;/SPAN&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sat, 23 Jan 2016 14:00:42 GMT</pubDate>
    <dc:creator>mhanrahan</dc:creator>
    <dc:date>2016-01-23T14:00:42Z</dc:date>
    <item>
      <title>Concurrent signals to same process instance.</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/concurrent-signals-to-same-process-instance/m-p/235405#M188535</link>
      <description>HiI have a process that makes heavy use of the camel integration within activiti. I have a process that waits on a receive task for a message to come in via Camel, does some processing on the event, then loops back around to the receive activity and waits for the next message. The activity after the</description>
      <pubDate>Sat, 23 Jan 2016 14:00:42 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/concurrent-signals-to-same-process-instance/m-p/235405#M188535</guid>
      <dc:creator>mhanrahan</dc:creator>
      <dc:date>2016-01-23T14:00:42Z</dc:date>
    </item>
    <item>
      <title>Re: Concurrent signals to same process instance.</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/concurrent-signals-to-same-process-instance/m-p/235406#M188536</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I don't think there's an easy solution for this, except putting a queue in front of the receive task …&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;The thing is, on the lowest level, you've got two transactions trying to do the same thing, and one wins … leading to the optimistic locking exception … that's fundamental to Activiti and not easy to circumvent.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 25 Jan 2016 09:11:51 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/concurrent-signals-to-same-process-instance/m-p/235406#M188536</guid>
      <dc:creator>jbarrez</dc:creator>
      <dc:date>2016-01-25T09:11:51Z</dc:date>
    </item>
  </channel>
</rss>

