Michael Dürig created OAK-4256:
----------------------------------

             Summary: CLONE - Cross gc sessions might introduce references to 
pre-compacted segments
                 Key: OAK-4256
                 URL: https://issues.apache.org/jira/browse/OAK-4256
             Project: Jackrabbit Oak
          Issue Type: Improvement
          Components: segment-next
            Reporter: Michael Dürig
            Assignee: Michael Dürig
            Priority: Critical
             Fix For: 1.6, 1.5.2
         Attachments: OAK-3348-1.patch, OAK-3348-2.patch, OAK-3348.patch, 
SCIT.patch, cleanup-time.png, compaction-time.png, cross-gc-refs.pdf, 
image.png, repo-size.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)

Reply via email to