Uploaded image for project: 'Tapestry 5'
  1. Tapestry 5
  2. TAP5-2406

PeriodicExecutor service can rarely reach a deadlock when trying to run a job and modify the list of jobs

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Blocker
    • Resolution: Fixed
    • Affects Version/s: 5.3.7, 5.4
    • Fix Version/s: 5.4
    • Component/s: tapestry-ioc
    • Labels:
      None

      Description

      "Tapestry PeriodicExecutor":
      at org.apache.tapestry5.ioc.internal.services.cron.PeriodicExecutorImpl$Job.isExecuting(PeriodicExecutorImpl.java:84)

      • waiting to lock <0x00000006c2ad83e8> (a org.apache.tapestry5.ioc.internal.services.cron.PeriodicExecutorImpl$Job)
        at org.apache.tapestry5.ioc.internal.services.cron.PeriodicExecutorImpl.executeCurrentBatch(PeriodicExecutorImpl.java:299)
      • locked <0x00000006bffbb7a8> (a org.apache.tapestry5.ioc.internal.services.cron.PeriodicExecutorImpl)
        at org.apache.tapestry5.ioc.internal.services.cron.PeriodicExecutorImpl.run(PeriodicExecutorImpl.java:249)
        at java.lang.Thread.run(Thread.java:744)

      "monad-background-6":
      at org.apache.tapestry5.ioc.internal.services.cron.PeriodicExecutorImpl.removeJob(PeriodicExecutorImpl.java:211)

      • waiting to lock <0x00000006bffbb7a8> (a org.apache.tapestry5.ioc.internal.services.cron.PeriodicExecutorImpl)
        at org.apache.tapestry5.ioc.internal.services.cron.PeriodicExecutorImpl$Job.cleanupAfterExecution(PeriodicExecutorImpl.java:161)
      • locked <0x00000006c2ad83e8> (a org.apache.tapestry5.ioc.internal.services.cron.PeriodicExecutorImpl$Job)
        at org.apache.tapestry5.ioc.internal.services.cron.PeriodicExecutorImpl$Job.invoke(PeriodicExecutorImpl.java:181)
        at org.apache.tapestry5.ioc.internal.services.cron.PeriodicExecutorImpl$Job.invoke(PeriodicExecutorImpl.java:48)
        at org.apache.tapestry5.ioc.internal.services.ParallelExecutorImpl$1.call(ParallelExecutorImpl.java:58)
        at java.util.concurrent.FutureTask.run(FutureTask.java:262)
        at egfit.f.p$a$b.run(ThreadPoolModule.scala:85)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:744)

      Found 1 deadlock.

      ---------------------------------------------------------------------------------------------

      Found one Java-level deadlock:
      =============================
      "Tapestry PeriodicExecutor":
      waiting to lock monitor 0x00007f641cef7298 (object 0x00000006c2ad83e8, a org.apache.tapestry5.ioc.internal.services.cron.PeriodicExecutorImpl$Job),
      which is held by "monad-background-6"
      "monad-background-6":
      waiting to lock monitor 0x00007f641c761868 (object 0x00000006bffbb7a8, a org.apache.tapestry5.ioc.internal.services.cron.PeriodicExecutorImpl),
      which is held by "Tapestry PeriodicExecutor"

        Attachments

          Activity

            People

            • Assignee:
              hlship Howard M. Lewis Ship
              Reporter:
              bitiboy Jun Tsai
            • Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: