Uploaded image for project: 'WildFly'
  1. WildFly
  2. WFLY-19681

DatabaseTimerPersistence$RefreshTask can delay other threads' timer additions or removals when detecting many Timer removals from the database

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Major Major
    • 34.0.0.Beta1, 34.0.0.Final
    • None
    • EJB
    • None

      If many EJB timers were recently removed from the database, then the DatabaseTimerPersistence$RefreshTask can have many existing timers to still process sequentially through this loop here while persistently holding the DatabaseTimerPersistence lock. If there are hundreds of thousands or even millions of existing entries remaining through this synchronized loop, then the lock can be held for 10-20 seconds consecutively or perhaps longer. Any other threads that attempt an EJB timer addition or cancel/removal during that refresh task will be notably delayed till the lock is released after the synchronized loop finishes combing through the existing entries.

            rhn-support-aogburn Aaron Ogburn
            rhn-support-aogburn Aaron Ogburn
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: