[jboss-jira] [JBoss JIRA] (WFLY-6540) Batch thread pool keepAlive setting seems to be ignored

James Perkins (JIRA) issues at jboss.org
Fri Apr 22 12:19:00 EDT 2016


    [ https://issues.jboss.org/browse/WFLY-6540?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13195912#comment-13195912 ] 

James Perkins commented on WFLY-6540:
-------------------------------------

I've sent a PR to fix the bug in jboss-threads https://github.com/jbossas/jboss-threads/pull/20.

This is fairly common behavior for thread pools. If you were to increase the threads to 20, run some jobs and then decrease back down to 10 you'd see 10 of the threads go away. 

Maybe in some ways it doesn't make sense to allow the keep-alive timeout to be configured in unbounded queues. Overall I'm not sure what would be expected here. I suppose it should at least be documented better on the resource.



> Batch thread pool keepAlive setting seems to be ignored
> -------------------------------------------------------
>
>                 Key: WFLY-6540
>                 URL: https://issues.jboss.org/browse/WFLY-6540
>             Project: WildFly
>          Issue Type: Bug
>          Components: Batch
>    Affects Versions: 10.0.0.Final
>            Reporter: Martin Kouba
>            Assignee: James Perkins
>
> Maybe I'm missing something but although the default _keepAlive_ is set to 30 seconds, the threads seem to run indefinitely - see also steps to reproduce.
> Snippet from the default config file:
> {code}
> <thread-pool name="batch">
>     <max-threads count="10"/>
>     <keepalive-time time="30" unit="seconds"/>
> </thread-pool>
> {code}
> Anyway, the {{UnboundedQueueThreadPoolService}}, or the underlying {{JBossThreadPoolExecutor}} respectively, used by the Batch subsystem is using the same {{corePoolSize}} and {{maximumPoolSize}} and it seems the core threads are not allowed to time out, i.e. {{org.jboss.threads.JBossThreadPoolExecutor.setAllowCoreThreadTimeout(boolean)}} is not used. 
> Moreover, a {{JBossThreadPoolExecutor.setAllowCoreThreadTimeout(boolean)}} invocation would probably result in an infinite loop:
> {code}
> public void setAllowCoreThreadTimeout(final boolean allow) {
>         setAllowCoreThreadTimeout(allow);
> }
> {code}
> should be replaced with:
> {code}
> public void setAllowCoreThreadTimeout(final boolean allow) {
>         allowCoreThreadTimeOut(allow);
> }
> {code}
> Given that {{JBossThreadPoolExecutor}} is used by more subsystems this issue may affect other subsystems as well.



--
This message was sent by Atlassian JIRA
(v6.4.11#64026)


More information about the jboss-jira mailing list