Uploaded image for project: 'Commons JEXL'
  1. Commons JEXL
  2. JEXL-414

SoftCache may suffer from race conditions

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 3.3
    • 3.4.0
    • None

    Description

      I found the SoftCache used from within the JEXL class Engine to be very relevant for overall performance (depending on the application) on the one hand, but on the other hand it may suffer from race conditions.

      While solid efford was taken to protect it from race conditions by surrounding access using a ReadWriteLock, parallel read access actually do reach out on a LinkedHashMap having set accessOrder=true. This means that on every potentially parallel, non serialized invocation of LinkedHashMap#get the order of elements is modified to bring the last accessed element down to the tail of the internal linked list structure and modCount is incremented.

       

      In our application rendering web templates, we observe multiple of 10000 access on the SoftCache per page impression and multiple of 10 page impressions per second per JVM instance.

      Not sure whether this is result of race condition claimed above, in heapdumps of that application I observed the LinkedHashMap used within SoftCache having a size of ~9500 elements while the SoftCache#size is set to limit the cache to 5000 elements. Additionaly the LinkedHashMap#modCount shows up with arbitrary giant positive or negative numbers, telling me it has overflown already after some hours of application uptime.

      Attachments

        Activity

          People

            henrib Henri Biestro
            holgersunke Holger Sunke
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: