Uploaded image for project: 'Commons Pool'
  1. Commons Pool
  2. POOL-202

GenericKeyedObjectPool.close() can interfere with evict(); eviction[Key]Iterator is not consistently synched.

VotersWatch issueWatchersLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 2.0
    • Fix Version/s: 2.0
    • Labels:
      None

      Description

      As far as I can tell, calling close during an evict() run can cause problems, because close() sets the eviction[Key]Iterator fields to null.

      I suspect close() and evict() should be mutually exclusive.
      Maybe close does not need to nullify the eviction[Key]Iterator fields, but there's probably other mutually incompatible behaviour.
      Or maybe the fields should be nulled in startEvictor.

      Also, the fields eviction[Key]Iterator aren't volatile and aren't always accessed under the same lock so might not be safely published.
      That would be solved by moving the nulling to startEvictor.

        Attachments

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              sebb Sebb

              Dates

              • Created:
                Updated:
                Resolved:

                Issue deployment