<?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: JobExecutor - Thread management  in Alfresco Archive</title>
    <link>https://connect.hyland.com/t5/alfresco-archive/jobexecutor-thread-management/m-p/154235#M108716</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;1. The default job executor has these setting&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;lt;code&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;protected int queueSize = 3;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; protected int corePoolSize = 3;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; private int maxPoolSize = 10;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; protected BlockingQueue&amp;lt;Runnable&amp;gt; threadPoolQueue;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; protected ThreadPoolExecutor threadPoolExecutor;&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;So it's very weird that you are seeing this behavior, as it should throttle itself when it reaches the 10 threads.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;So just to confirm: if you got, say, 100 async tasks, you see 100 threads being created?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;2. Yes - the whole JobExecutor infrastructure is pluggable&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 10 Sep 2013 15:40:55 GMT</pubDate>
    <dc:creator>jbarrez</dc:creator>
    <dc:date>2013-09-10T15:40:55Z</dc:date>
    <item>
      <title>JobExecutor - Thread management</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/jobexecutor-thread-management/m-p/154234#M108715</link>
      <description>hi everyone,I'm having the following problem(due to the JobExecutor of Activiti) when launching load tests on my application :the java process's memory increses constantly until it saturates (then i get an OutOfMemory with the java process &amp;gt; 4 Go and the Java process is killed by the OS).in the J</description>
      <pubDate>Wed, 04 Sep 2013 14:00:27 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/jobexecutor-thread-management/m-p/154234#M108715</guid>
      <dc:creator>slash117</dc:creator>
      <dc:date>2013-09-04T14:00:27Z</dc:date>
    </item>
    <item>
      <title>Re: JobExecutor - Thread management</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/jobexecutor-thread-management/m-p/154235#M108716</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;1. The default job executor has these setting&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;lt;code&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;protected int queueSize = 3;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; protected int corePoolSize = 3;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; private int maxPoolSize = 10;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; protected BlockingQueue&amp;lt;Runnable&amp;gt; threadPoolQueue;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; protected ThreadPoolExecutor threadPoolExecutor;&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;So it's very weird that you are seeing this behavior, as it should throttle itself when it reaches the 10 threads.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;So just to confirm: if you got, say, 100 async tasks, you see 100 threads being created?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;2. Yes - the whole JobExecutor infrastructure is pluggable&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 10 Sep 2013 15:40:55 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/jobexecutor-thread-management/m-p/154235#M108716</guid>
      <dc:creator>jbarrez</dc:creator>
      <dc:date>2013-09-10T15:40:55Z</dc:date>
    </item>
    <item>
      <title>Re: JobExecutor - Thread management</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/jobexecutor-thread-management/m-p/154236#M108717</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;hello, &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;its true that the number of threads doesn't exceed 10 (= MaxPoolSize), but the fact that CorePoolSize &amp;lt; MaxPoolSize means that every time no more async tasks are executed, the number of threads in the pool decreases from 10 to 3. This causes a phenomenon of thread liberation that apparently causes saturation the native memory of the java process(native memory = total process memory - heap memory - permGen memory).&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;So instead of re-using the threads previously created, the application keeps creating and liberating threads upon the need of execution tasks.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Regards, &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Gilbert E.H.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 11 Sep 2013 11:20:04 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/jobexecutor-thread-management/m-p/154236#M108717</guid>
      <dc:creator>slash117</dc:creator>
      <dc:date>2013-09-11T11:20:04Z</dc:date>
    </item>
    <item>
      <title>Re: JobExecutor - Thread management</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/jobexecutor-thread-management/m-p/154237#M108718</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;But wouldn't that be the wanted behaviour? I mean, if the load is low, you don't want to keep those 10 threads spinning up?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Probably a better solution would be to have an 'idle period' on them before they are put back into the thread pool?&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 13 Sep 2013 09:34:26 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/jobexecutor-thread-management/m-p/154237#M108718</guid>
      <dc:creator>jbarrez</dc:creator>
      <dc:date>2013-09-13T09:34:26Z</dc:date>
    </item>
    <item>
      <title>Re: JobExecutor - Thread management</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/jobexecutor-thread-management/m-p/154238#M108719</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;hello Joram, &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;i think both solutions are good (constant ThreadPool Size or idle period) or at least better than a variable threadPoolSize without a idle period. I chose to implement the constant threadPool size (CoreSize = MaxSize = 10).&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;But now i have another problem : If all goes as supposed , now i should have 10 threads from the launching until the shutdown of my application. But unfortunately this is not the case. In fact every time activiti throws an exception(functional error or ActivitiLockingException ), the thread is killed and replaced by another one.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;At which level do you think i should catch and manage these exceptions to avoid having this behavior.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I tried to use a catch bloc for Exception in the executeJobs method (JobExecutor) but it didn't work. The thread is killed before…&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;lt;code&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; public void executeJobs(List&amp;lt;String&amp;gt; jobIds) {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; threadPoolExecutor.execute(new ExecuteJobsRunnable(this, jobIds));&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (RejectedExecutionException ree) {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rejectedJobsHandler.jobsRejected(this, jobIds);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (Exception e) {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; log.error("An error occurred while executing the jobs : " + jobIds.toString(), e);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&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;Regards, &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Gilbert E.H.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 13 Sep 2013 15:33:07 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/jobexecutor-thread-management/m-p/154238#M108719</guid>
      <dc:creator>slash117</dc:creator>
      <dc:date>2013-09-13T15:33:07Z</dc:date>
    </item>
    <item>
      <title>Re: JobExecutor - Thread management</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/jobexecutor-thread-management/m-p/154239#M108720</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;hello, &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;i corrected the problem by adding a catch bloc in the ExecutableJobsRunnable class thus catching the exception thrown before the ThreadPoolExecutor catchs it. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;lt;code&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; public void run() {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; final JobExecutorContext jobExecutorContext = new JobExecutorContext();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; final List&amp;lt;String&amp;gt; currentProcessorJobQueue = jobExecutorContext.getCurrentProcessorJobQueue();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; final CommandExecutor commandExecutor = jobExecutor.getCommandExecutor();&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; currentProcessorJobQueue.addAll(jobIds);&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Context.setJobExecutorContext(jobExecutorContext);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try {&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;&amp;nbsp;&amp;nbsp; while (!currentProcessorJobQueue.isEmpty()) {&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; commandExecutor.execute(new ExecuteJobsCmd(currentProcessorJobQueue.remove(0)));&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;&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;&amp;nbsp; } catch (Exception e) {&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;&amp;nbsp;&amp;nbsp; log.error("An error occurred while executing the jobs : " + jobIds.toString(), e);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } finally {&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;&amp;nbsp;&amp;nbsp; Context.removeJobExecutorContext();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&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; }&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;Regards,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Gilbert E.H.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 16 Sep 2013 08:27:21 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/jobexecutor-thread-management/m-p/154239#M108720</guid>
      <dc:creator>slash117</dc:creator>
      <dc:date>2013-09-16T08:27:21Z</dc:date>
    </item>
  </channel>
</rss>

