<?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 How to Handle Errors due to Database Timeouts in Alfresco Archive</title>
    <link>https://connect.hyland.com/t5/alfresco-archive/how-to-handle-errors-due-to-database-timeouts/m-p/180559#M133689</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 implemented a Java class which is able to run MS Project Server Reports. These are generated via an external webservice. The method call which retrieves the report can sometimes take a while to return the report instance. Because the transaction for the Process in Activiti has been open for more than a few minutes, a database timeout occurs.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I was wondering if there was a way to capture these errors which are thrown by the Activiti Engine, &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;My catch block is as below which throws a BPMNError but the flow does not take the 'error route' when this particular timeout exception occurs.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;lt;code&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;catch(Exception ex){&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;&amp;nbsp;SafeLogger.checkAndWriteToLog(ex.toString(), logger);&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;&amp;nbsp;ex.printStackTrace();&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;&amp;nbsp;throw new BpmnError(ex.toString());&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;lt;code&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The error stack trace is as follows&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;lt;code&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;08:09:36,978 [pool-1-thread-53] ERROR org.activiti.engine.impl.pvm.runtime.AtomicOperationProcessEnd&amp;nbsp; - Error while completing sub process of execution ProcessInstance[21415]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;org.apache.ibatis.exceptions.PersistenceException:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;### Error querying database.&amp;nbsp; Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The last packet successfully received from the server was 207,265 milliseconds ago.&amp;nbsp; The last packet sent successfully to the server was 1 milliseconds ago.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;### The error may exist in org/activiti/db/mapping/entity/IdentityLink.xml&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;### The error may involve org.activiti.engine.impl.persistence.entity.IdentityLinkEntity.selectIdentityLinksByProcessInstance-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: select * from ACT_RU_IDENTITYLINK where PROC_INST_ID_ = ?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;### Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The last packet successfully received from the server was 207,265 milliseconds ago.&amp;nbsp; The last packet sent successfully to the server was 1 milliseconds ago.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:23)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:107)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:98)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at org.activiti.engine.impl.db.DbSqlSession.selectListWithRawParameter(DbSqlSession.java:286)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at org.activiti.engine.impl.db.DbSqlSession.selectList(DbSqlSession.java:277)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at org.activiti.engine.impl.db.DbSqlSession.selectList(DbSqlSession.java:272)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at org.activiti.engine.impl.db.DbSqlSession.selectList(DbSqlSession.java:253)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;………………&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;lt;code&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Is there a way to capture these in Activiti?&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 07 May 2015 16:56:20 GMT</pubDate>
    <dc:creator>zlatan316</dc:creator>
    <dc:date>2015-05-07T16:56:20Z</dc:date>
    <item>
      <title>How to Handle Errors due to Database Timeouts</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/how-to-handle-errors-due-to-database-timeouts/m-p/180559#M133689</link>
      <description>Hi,I have implemented a Java class which is able to run MS Project Server Reports. These are generated via an external webservice. The method call which retrieves the report can sometimes take a while to return the report instance. Because the transaction for the Process in Activiti has been open fo</description>
      <pubDate>Thu, 07 May 2015 16:56:20 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/how-to-handle-errors-due-to-database-timeouts/m-p/180559#M133689</guid>
      <dc:creator>zlatan316</dc:creator>
      <dc:date>2015-05-07T16:56:20Z</dc:date>
    </item>
    <item>
      <title>Re: How to Handle Errors due to Database Timeouts</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/how-to-handle-errors-due-to-database-timeouts/m-p/180560#M133690</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Apologies for the format of the post, i cannot seem to edit it.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 07 May 2015 16:59:34 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/how-to-handle-errors-due-to-database-timeouts/m-p/180560#M133690</guid>
      <dc:creator>zlatan316</dc:creator>
      <dc:date>2015-05-07T16:59:34Z</dc:date>
    </item>
    <item>
      <title>Re: How to Handle Errors due to Database Timeouts</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/how-to-handle-errors-due-to-database-timeouts/m-p/180561#M133691</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;In my environment I delegate such "long running" activities to a job scheduler. In the process definition I use "User Task" activities whenever I want to model a external job execution. The external job scheduler can then use the REST api or use a different Activiti engine instance (which points to the same DB,&amp;nbsp; of course) in order to acquire jobs. Once the job is complete, you use the "Task Service" API to inform Activiti that the user task is complete, and your process instance moves on.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;This approach has the following advantages:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;* No database transaction timeout&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Better scalability&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* The external task can be assigned to a a dedicated node, leading to better resource utilization.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Easier recovery from system errors&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The downsize is the extra complexity of running a separate job scheduler, but, IMO,&amp;nbsp; I think it pays off.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 09 May 2015 16:14:02 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/how-to-handle-errors-due-to-database-timeouts/m-p/180561#M133691</guid>
      <dc:creator>pmsevestre</dc:creator>
      <dc:date>2015-05-09T16:14:02Z</dc:date>
    </item>
    <item>
      <title>Re: How to Handle Errors due to Database Timeouts</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/how-to-handle-errors-due-to-database-timeouts/m-p/180562#M133692</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Thanks for your response. I am planning on using the Scheduler functionality in the new 5.17 version of Activiti. But currently we have 5.14.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I actually just wanted to know that if we were to have a Service Task open for too long, can we catch the timeout error using an error event and drive the workflow to a different path?&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 11 May 2015 08:38:48 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/how-to-handle-errors-due-to-database-timeouts/m-p/180562#M133692</guid>
      <dc:creator>zlatan316</dc:creator>
      <dc:date>2015-05-11T08:38:48Z</dc:date>
    </item>
    <item>
      <title>Re: How to Handle Errors due to Database Timeouts</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/how-to-handle-errors-due-to-database-timeouts/m-p/180563#M133693</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;No, a service task is executed until it's ready. We don't allow for timeout events.&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, 13 May 2015 12:37:28 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/how-to-handle-errors-due-to-database-timeouts/m-p/180563#M133693</guid>
      <dc:creator>trademak</dc:creator>
      <dc:date>2015-05-13T12:37:28Z</dc:date>
    </item>
    <item>
      <title>Re: How to Handle Errors due to Database Timeouts</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/how-to-handle-errors-due-to-database-timeouts/m-p/180564#M133694</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Thanks trademak. We will have to research the use of CAML to execute these long-running tasks outside of Activiti.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 14 May 2015 16:25:52 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/how-to-handle-errors-due-to-database-timeouts/m-p/180564#M133694</guid>
      <dc:creator>zlatan316</dc:creator>
      <dc:date>2015-05-14T16:25:52Z</dc:date>
    </item>
  </channel>
</rss>

