[
https://issues.apache.org/jira/browse/OAK-3172?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14651719#comment-14651719
]
Alex Parvulescu commented on OAK-3172:
--------------------------------------
A tentative approach would be to release the root reference from the session
during the logout call. a logged-out session is not valid anymore, so I think
this would not introduce any regressions.
> Unreleased closed sessions can keep a root reference from getting collected
> ---------------------------------------------------------------------------
>
> Key: OAK-3172
> URL: https://issues.apache.org/jira/browse/OAK-3172
> Project: Jackrabbit Oak
> Issue Type: Sub-task
> Components: segmentmk
> Reporter: Alex Parvulescu
> Assignee: Alex Parvulescu
> Fix For: 1.3.5
>
>
> 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:
> {code}
> 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
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)