[ https://issues.apache.org/jira/browse/OAK-4180?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15286104#comment-15286104 ]
Chetan Mehrotra commented on OAK-4180: -------------------------------------- Current work in progress is at https://github.com/chetanmeh/jackrabbit-oak/tree/OAK-4180 > Use Segment NodeStore as a local cache for a remote Document store > ------------------------------------------------------------------ > > Key: OAK-4180 > URL: https://issues.apache.org/jira/browse/OAK-4180 > Project: Jackrabbit Oak > Issue Type: New Feature > Components: documentmk > Reporter: Chetan Mehrotra > Assignee: Chetan Mehrotra > Fix For: 1.6 > > Attachments: OAK-4180-v1.patch > > > DocumentNodeStore makes use of persistent cache to speed up its processing > and save on making remote calls for data already present in cache > In addition to that we can look into make use of Segment NodeStore as kind of > "local copy" for certain paths in repository and route calls to it if > possible. As part of this task I would like to prototype such an approach. At > high level it would work as below > # At start bootstrap the setup and shutdown it down > # Use a modified "sidegrade" and copy over the NodeStats from Document store > to Segment store. In such a copy we also store some Document specific > properties like {{readRevision}} and {{lastRevision}} as hidden property in > Segment NodeStates > # In DocumentNodeStore we refactor the current code to extract a > ## {{AbstractDocumentNodeState}} - Abase class which has some logic move out > from {{DocumentNodeState}} > ## {{SegmentDocumentNodeState}} extends above and delegate calls to a wrapped > {{SegmentNodeState}} > ## {{DocumentNodeState}} would also extend {{AbstractDocumentNodeState}} and > hence delegate to some calls to parent. In this when a call comes for > {{getChildNode}} it can check if that can be served by a local copy of > {{SegmentNodeStore}} for given {{rootRevision}} then it delegates to that > # For update plan is to make use of {{Observer}} which listens to changes and > updates the local copy for certain configured paths. > ## Key aspect to address here is handle the restart case where in a cluster a > specific node restarts after some time then how it refreshes itself there > *Currently its in a prototype phase* -- This message was sent by Atlassian JIRA (v6.3.4#6332)