Jackrabbit Content Repository
  1. Jackrabbit Content Repository
  2. JCR-790

Possible deadlock during concurrent operations on versionable nodes

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Duplicate
    • Affects Version/s: 1.2.1
    • Fix Version/s: None
    • Component/s: versioning
    • Labels:
      None

      Description

      As discussed on the dev mailing-list:

      We are using the Repository Server deployment model for one of our systems, with 3 different web applications using the same jackrabbit 1.2.1 server.
      Two of the webapps are read-only frontoffice clients, the third one is a read-write backoffice.

      Sometimes the jackrabbit-server enters a deadlock and stops answering requests until it is restarted. A thread dump of the deadlock situation is attached.

      From the thread dump analysis provided by Marcel Reutegger (attached too), it appears that two threads are indeed deadlocked while attempting to save() versionable items, after acquiring locks (Workspace SISM/VersionManager) in different orders.
      This appears to be the case only because the items being saved are versionable, and because one of them is a new item, which means that the VersionHistory is being created.

      We couldn't find an easy way to reproduce this concurrency issue, as it doesn't happen very often, but it takes down our whole system when it does.

      Note: if that matters, some of the client applications are using jackrabbit-jcr-rmi-1.1.jar and jackrabbit-jcr-core-1.1.jar to talk to this jackrabbit 1.2.1 server.

      1. jackrabbit-thread-dump.log.zip
        48 kB
        Olivier Dony
      2. thread-dump-analysis.txt.zip
        1 kB
        Olivier Dony

        Issue Links

          Activity

          Hide
          Olivier Dony added a comment -

          This is the (huge) thread dump of the deadlock situation.

          Show
          Olivier Dony added a comment - This is the (huge) thread dump of the deadlock situation.
          Hide
          Olivier Dony added a comment -

          This is the analysis of the locking performed by the 2 deadlocked threads, provided by Marcel Reutegger.

          Show
          Olivier Dony added a comment - This is the analysis of the locking performed by the 2 deadlocked threads, provided by Marcel Reutegger.
          Hide
          Stefan Guggisberg added a comment -

          seems to be related to JCR-18

          Show
          Stefan Guggisberg added a comment - seems to be related to JCR-18
          Hide
          Marcel Reutegger added a comment -

          And a duplicate of JCR-672

          Show
          Marcel Reutegger added a comment - And a duplicate of JCR-672

            People

            • Assignee:
              Unassigned
              Reporter:
              Olivier Dony
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development