Uploaded image for project: 'Jackrabbit Oak'
  1. Jackrabbit Oak
  2. OAK-3172

Unreleased closed sessions can keep a root reference from getting collected

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Major
    • Resolution: Fixed
    • None
    • 1.3.8, 1.4
    • segmentmk

    Description

      It looks like even if a component logs out a session, but keeps a reference to it around this will still prevent GC from running, as the session will wrap a root reference pointing to the moment/revision when the session was last accessed.

      Extract from jvisualvm:

      this     - value: org.apache.jackrabbit.oak.plugins.segment.SegmentId #505
       <- [106]     - class: org.apache.jackrabbit.oak.plugins.segment.SegmentId[], value: org.apache.jackrabbit.oak.plugins.segment.SegmentId #505
        <- refids     - class: org.apache.jackrabbit.oak.plugins.segment.Segment, value: org.apache.jackrabbit.oak.plugins.segment.SegmentId[] #67 (120 items)
         <- segment     - class: org.apache.jackrabbit.oak.plugins.segment.SegmentId, value: org.apache.jackrabbit.oak.plugins.segment.Segment #81
          <- [124]     - class: org.apache.jackrabbit.oak.plugins.segment.SegmentId[], value: org.apache.jackrabbit.oak.plugins.segment.SegmentId #496
           <- refids     - class: org.apache.jackrabbit.oak.plugins.segment.Segment, value: org.apache.jackrabbit.oak.plugins.segment.SegmentId[] #17 (204 items)
            <- segment     - class: org.apache.jackrabbit.oak.plugins.segment.SegmentId, value: org.apache.jackrabbit.oak.plugins.segment.Segment #17
             <- segmentId     - class: org.apache.jackrabbit.oak.plugins.segment.SegmentNodeState, value: org.apache.jackrabbit.oak.plugins.segment.SegmentId #551
              <- base     - class: org.apache.jackrabbit.oak.plugins.segment.SegmentNodeBuilder, value: org.apache.jackrabbit.oak.plugins.segment.SegmentNodeState #5557
               <- builder     - class: org.apache.jackrabbit.oak.core.MutableRoot, value: org.apache.jackrabbit.oak.plugins.segment.SegmentNodeBuilder #5652
                <- root     - class: org.apache.jackrabbit.oak.jcr.repository.RepositoryImpl$1, value: org.apache.jackrabbit.oak.core.MutableRoot #151
                 <- sd     - class: com.adobe.granite.repository.impl.CRX3SessionImpl, value: org.apache.jackrabbit.oak.jcr.repository.RepositoryImpl$1 #117
      

      Attachments

        1. OAK-3172.patch
          7 kB
          Alex Deparvu

        Activity

          People

            stillalex Alex Deparvu
            stillalex Alex Deparvu
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: