]
Jiri Ondrusek moved JBEAP-15809 to WFLY-11328:
----------------------------------------------
Project: WildFly (was: JBoss Enterprise Application Platform)
Key: WFLY-11328 (was: JBEAP-15809)
Workflow: GIT Pull Request workflow (was: CDW with loose statuses v1)
Component/s: EE
(was: Concurrency Utilities)
(was: EE)
Target Release: (was: 7.2.0.GA)
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_enterpr...]:
- 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...]
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/glassf...],
[
AbstractManagedExecutorService#getHungThreads()|https://github.com/javaee...]
and
[
AbstractManagedExecutorService#isLongRunningTasks()|https://github.com/ja...]
(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.