Tapestry
  1. Tapestry
  2. TAPESTRY-1571

CheckForUpdatesFilter can cause deadlock

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 5.0.5
    • Fix Version/s: 5.0.5
    • Component/s: tapestry-core
    • Labels:
      None

      Description

      CheckForUpdatesFilter will cause a deadlock in the following circumstances.
      1) Initial request is received and processing starts (CheckForUpdatesFilter read lock obtained)
      2) Request processing triggers another http request to the same application
      3) Nested request is received
      4) CheckForUpdatesFilter determines it is time to check for file updates
      5) CheckForUpdatesFilter tries to obtain write lock
      6) Deadlock: Nested request is blocked waiting for read lock held by parent request to be released.

      This is an unusual situation, generally I wouldn't try to to access a page via http whilst trying to process another request. However I ran across this problem whilst using a third party library (JasperReports) that referenced resources via http links.

      Although uncommon, I believe Tapestry should be able to handle this without deadlocking

      1. TAP-1571.patch
        17 kB
        Ben Sommerville

        Activity

          People

          • Assignee:
            Howard M. Lewis Ship
            Reporter:
            Ben Sommerville
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development