Uploaded image for project: 'JBoss Enterprise Application Platform'
  1. JBoss Enterprise Application Platform
  2. JBEAP-13778

[GSS](7.2.0) EE Concurency Utilities "hung-task-threshold" / "long-running-tasks" do not work and are not implemented as explained

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Duplicate
    • Icon: Major Major
    • None
    • None
    • Concurrency Utilities, EE
    • None
    • ?

      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:

      • 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 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 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), AbstractManagedExecutorService#getHungThreads() and AbstractManagedExecutorService#isLongRunningTasks() (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.

              emartins@redhat.com Eduardo Martins
              rhn-support-mmiura Masafumi Miura
              Votes:
              0 Vote for this issue
              Watchers:
              10 Start watching this issue

                Created:
                Updated:
                Resolved: