Uploaded image for project: 'Jackrabbit Content Repository'
  1. Jackrabbit Content Repository
  2. JCR-3027

JCR Server has concurrency issues on JcrWebdavServer.SessionCache internal HashMap caches

    XMLWordPrintableJSON

Details

    Description

      After doing the davex remoting performance work outlined in JCR-3026, the increased concurrency on my jcr server exposed a lot of errors related to getting and putting from the JcrWebdavServer.SessionCache's internal HashMap's. This problem with HashMap's is a well known concurrency error and was easily fixed by upgrading these maps to ConcurrentHashMaps. Performance seems dramatically better.

      The fix includes exposure of a tuning parameter that allows the user to set the expected concurrency level. This is the number of concurrent requests you expect the server to be handling. In the typical davex remoting scenario, this means you should tune this server side value to match the total max connections of all clients pointed at the server. See JCR-3026.

      USAGE: Set the 'concurrency-level' init param for the JcrRemotingServlet, via the web.xml of the jackabbit-webapp component. Default value is 50. Or you can intervene in a lower level api if appropriate.

      Attachments

        1. JCR-3027_JCRWebdavServer.java.patch
          4 kB
          chad davis
        2. JCR-3027_JCRWebdavServerServlet.java.patch
          1 kB
          chad davis
        3. JCR-3027_web.xml.patch
          0.8 kB
          chad davis

        Activity

          People

            angela Angela Schreiber
            chadmichael chad davis
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: