]
Brian Stansberry commented on WFLY-11328:
-----------------------------------------
I think this feature is only workable if the "last executor created overrides older
ones configs" issue Eduardo raised is corrected in the RI. If that can't be done,
since they never had any practical effect we should deprecate the attributes with the
deprecation message saying they don't have any effect. (We can always undeprecate
later if the RI lets us do something solid.)
A new AbstractManagedThread.isTaskHung(long now, long hungTaskThreshold) would allow the
AbstractManagedExecutorService to control the timeout and remove the need to pass it via
the thread factory.
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.