[jboss-jira] [JBoss JIRA] (WFLY-11328) EE Concurency Utilities "hung-task-threshold" / "long-running-tasks" do not work and are not implemented as explained

Jiri Ondrusek (Jira) issues at jboss.org
Wed Nov 14 02:58:00 EST 2018


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

Jiri Ondrusek commented on WFLY-11328:
--------------------------------------

[~emmartins] Thank you for your analysis.
Comment belonging to current PR:
ad 1 - I think that synchronization could be omitted without any impact, additions to list are called typically at server startup, iteration is called after 1 minute and then periodically, so there should be no conflict
ad 2 - 10 seconds is really low value, originally I was using 1 minute - but with last change, I've accidentally commited also this change (which is my ebg value). -> so 10 sec as mistake from my side, there should be 1 minute - which should be OK (as you are suggesting it in b)

I agree that killing threads is rather strict. I can imagine logging some warnings for user to know about hung treads as you are suggesting in b. But you last comment shows, that in some cases, this threshold could be reconfigured to different values -> so even logging will happen in wrong times.

>From my point of view, much easier and consistent behavior will be item *a*.
@Masafumi Miura (reporter of the original issue - https://issues.jboss.org/browse/JBEAP-13778) What do you think?






> EE Concurency Utilities "hung-task-threshold" / "long-running-tasks" do not work and are not implemented as explained
> ---------------------------------------------------------------------------------------------------------------------
>
>                 Key: WFLY-11328
>                 URL: https://issues.jboss.org/browse/WFLY-11328
>             Project: WildFly
>          Issue Type: Bug
>          Components: EE
>            Reporter: Jiri Ondrusek
>            Assignee: Jiri Ondrusek
>            Priority: Major
>
> ee subsystem parameters "hung-task-threshold" and "long-running-tasks" for managed-executor-service / managed-scheduled-executor-service do not work and are not implemented as described in [EAP 7 Development Guide|https://access.redhat.com/documentation/en-us/red_hat_jboss_enterprise_application_platform/7.0/html/development_guide/concurrency_utilities#managed_executor_service]:
>  - hung-task-threshold: Defines the time, in milliseconds, after which tasks are considered hung by the managed executor service and forcefully aborted. If the value is 0 (which is the default), tasks are never considered hung.
>  - long-running-tasks: Suggests optimizing the execution of long running tasks, and defaults to false.
> I tested with [EAP 7 QuickStarts managed-executor-service example|https://github.com/jboss-developer/jboss-eap-quickstarts/tree/7.0.0.Final/managed-executor-service] but these paremeters doe not take any effect:
>  - tasks exceeding hung-task-threshold are never forcefully aborted. And there's no way to detect hung tasks exceeding hung-task-threshold. 
>  - setting long-running-tasks to true does not change the behavior.
> As far as I checked the source code, I noticed the following:
>  - EAP 7.x uses the EE Concurency Utilities RI [org.glassfish.enterprise.concurrent|https://github.com/javaee/cu-ri] internally and just passes the paramters to the RI. 
>  - In the EE Concurency Utilities RI, these parameters are used in the methods [ManagedThreadFactoryImpl#isTaskHung(long now)|https://github.com/javaee/cu-ri/blob/master/src/main/java/org/glassfish/enterprise/concurrent/ManagedThreadFactoryImpl.java#L294-L299], [AbstractManagedExecutorService#getHungThreads()|https://github.com/javaee/cu-ri/blob/master/src/main/java/org/glassfish/enterprise/concurrent/AbstractManagedExecutorService.java#L183-L201] and [AbstractManagedExecutorService#isLongRunningTasks()|https://github.com/javaee/cu-ri/blob/master/src/main/java/org/glassfish/enterprise/concurrent/AbstractManagedExecutorService.java#L211-L213] (AbstractManagedExecutorService is the parent class of ManagedExecutorServiceImpl / ManagedScheduledExecutorServiceImpl). 
>  - However, these methods are never invoked from EAP 7.x. So, these parameters do not take any effect in EAP 7.x. 
>  - In addition, even if these methods are used, it looks the implementation is totally different from the description in the documentation. The parameter "long-running-tasks" is just used as a flag to skip from checking hung thread detection. And the parameter "hung-task-threshold" never forcefully abort the hung thread exceeding the threshold. 



--
This message was sent by Atlassian Jira
(v7.12.1#712002)


More information about the jboss-jira mailing list