[ https://issues.apache.org/jira/browse/OAK-4180?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Davide Giannella closed OAK-4180. --------------------------------- Bulk close for 1.5.7 > 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 > Labels: docs-impacting > Fix For: 1.6, 1.5.7 > > 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 > *Usage* > Following 2 OSGi configs would need to be seed > * org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStoreService.config > {noformat} > secondary=B"true" > {noformat} > * > org.apache.jackrabbit.oak.plugins.document.secondary.SecondaryStoreCacheService.config > {noformat} > includedPaths=[ \ > "/", > ] > {noformat} > With these settings if DocumentNodeStoreService gets started it would pickup > the cache and use it. Change {{includedPaths}} depending on paths in > repository which you want to include in secondary store t -- This message was sent by Atlassian JIRA (v6.3.4#6332)