[ 
https://issues.apache.org/jira/browse/OAK-4180?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15341219#comment-15341219
 ] 

Chetan Mehrotra commented on OAK-4180:
--------------------------------------

Merged to branch to trunk today. Pending work

# Ensure that persistent cache does not cache node under path which are to be 
served by secondary store
# Remove path and read revision from meta properties to be stored in secondary 
store NodeStates

> Use another 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)

Reply via email to