Uploaded image for project: 'OpenJPA'
  1. OpenJPA
  2. OPENJPA-653

Concurrency issue with query cache enabled

VotersWatch issueWatchersLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 1.2.0
    • 1.2.0
    • datacache
    • None

    Description

      A Java EE application with query result caching enabled and with many concurrent users is failing with a ConcurrentModificationException in org.apache.openjpa.datacache.QueryCacheStoreQuery. Specifically, the failure is in the inner class.method CachingResultObjectProvider.checkFinished(Object, boolean) and occurs while iterating the _data TreeMap within the QueryResult constructor.

      Examination of this method showed that the tree map is synchronized in the beginning of the method and then later when the map is cleared in abortCaching(). It is not synchronized when a new QueryResult is constructed. This allows a thread to iterate over the map (during the constructor) while another thread is modifying it.

      Attachments

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            techhusky Jeremy Bauer
            techhusky Jeremy Bauer
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment