[ https://issues.apache.org/jira/browse/OAK-3348?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Michael Dürig updated OAK-3348: ------------------------------- Fix Version/s: (was: 1.3.6) 1.3.7 > Cross gc sessions might introduce references to pre-compacted segments > ---------------------------------------------------------------------- > > Key: OAK-3348 > URL: https://issues.apache.org/jira/browse/OAK-3348 > Project: Jackrabbit Oak > Issue Type: Sub-task > Components: segmentmk > Reporter: Michael Dürig > Assignee: Michael Dürig > Labels: cleanup, compaction, gc > Fix For: 1.3.7 > > Attachments: OAK-3348.patch, image.png > > > I suspect that certain write operations during compaction can cause > references from compacted segments to pre-compacted ones. This would > effectively prevent the pre-compacted segments from getting evicted in > subsequent cleanup phases. > The scenario is as follows: > * A session is opened and a lot of content is written to it such that the > update limit is exceeded. This causes the changes to be written to disk. > * Revision gc runs causing a new, compacted root node state to be written to > disk. > * The session saves its changes. This causes rebasing of its changes onto the > current root (the compacted one). At this point any node that has been added > will be added again in the sub-tree rooted at the current root. Such nodes > however might have been written to disk *before* revision gc ran and might > thus be contained in pre-compacted segments. As I suspect the node-add > operation in the rebasing process *not* to create a deep copy of such nodes > but to rather create a *reference* to them, a reference to a pre-compacted > segment is introduced here. > Going forward we need to validate above hypothesis, assess its impact if > necessary come up with a solution. -- This message was sent by Atlassian JIRA (v6.3.4#6332)