Hi Andy

I have not done this before, I'm just trying to extrapolate from
looking at the code.

In your above config, I think the following config
"org.apache.jackrabbit.oak.segment.SegmentNodeStoreService~global"
should be "org.apache.jackrabbit.oak.segment.SegmentNodeStoreFactory~global".
Looking at CompositeNodeStoreService it only references
NodeStoreProvider services and not NodeStore services. It registers
itself as a NodeStore however, so in addition to a falty
CompositeNodeSore the system might get confused with two registered
NodeStore instances (one composite NS, one segment NS).

I hope this is correct and helps. YMMV.

Regards
Julian


On Tue, Mar 31, 2020 at 11:13 PM Andreas Schaefer
<schaef...@me.com.invalid> wrote:
>
> I posted that to Jackrabbit Oak Dev mailing list (oak-dev) but did not get a 
> response so far.
>
> There are three things that looks bad to me:
>
> 1. The Global Node Store Service is not recognized as Global Node Store in 
> the Composite Node Store
> 2. The Global Node Store Factory is by definition only a secondary Node Store 
> even though with role composite-global it is treated like one
> 3. The Composite Node Store does not maintain a list of Node Store it 
> aggregates or maybe the name is wrong and it is more or less a redirector for 
> the given paths. That said if I have more than one secondary Node Stores I am 
> not sure how it then figures out which one to use
>
> - Andy
>
> > On Mar 31, 2020, at 1:06 PM, Daniel Klco <dk...@apache.org> wrote:
> >
> > Thanks for looking into this Andy! I've been very curious about this as
> > well. The documentation is not detailed to say the least.
> >
> > I do wonder if this is an Apache Sling question or an Apache Jackrabbit
> > question though.
> >
> > On Tue, Mar 31, 2020 at 4:02 PM Andreas Schaefer <schaef...@me.com.invalid>
> > wrote:
> >
> >> Hi
> >>
> >> Ruben and I want to setup a Sling 12 instance with a composite node store
> >> where /libs and /apps is in a read only repository and the rest in a
> >> read/write repo (general).
> >>
> >> I tried several approaches but for now I already fail by just trying to
> >> create a composite node store.
> >> This is my most promising approach:
> >>
> >> 1. Create a Segment Node Store for global
> >>
> >> "org.apache.jackrabbit.oak.segment.SegmentNodeStoreService~global": {
> >>  "service.ranking:Integer": "100",
> >>  "name": "Oak-Segment-Tar",
> >>  "repository.home": "launcher/repository-global",
> >>  "host": "localhost"
> >> },
> >>
> >> 2. Create a Secondary Segment Node Store using the factory:
> >>
> >> "org.apache.jackrabbit.oak.segment.SegmentNodeStoreFactory~libs": {
> >>  "repository.home": "launcher/repository-libs",
> >>  "customBlobStore": false,
> >>  "role": "composite-mount-libs",
> >>  "nodeDeduplicationCache.size": 0
> >> },
> >>
> >> 3. Create a Mount Info Provider for libs:
> >>
> >> "org.apache.jackrabbit.oak.composite.MountInfoProviderService": {
> >>  "mountName": "libs",
> >>  "readOnlyMount": false,
> >>  "pathsSupportingFragments": [
> >>    "/oak:index/*$"
> >>  ],
> >>  "mountedPaths": [
> >>    "/libs",
> >>    "/apps",
> >>    "/jcr:system/rep:permissionStore/oak:mount-libs-crx.default"
> >>  ]
> >> },
> >>
> >> 4. Finally create a Composite Node Store:
> >>
> >> "org.apache.jackrabbit.oak.composite.CompositeNodeStoreService": {
> >>  "seedMount": "libs",
> >>  "enabled": true,
> >>  "enableChecks": false
> >> }
> >>
> >> This setup fails because there is no global node store and therefore the
> >> composite node store is not created.
> >>
> >> When I create a Segment Node Store Factory Service for a global node store
> >> the composite node store is activated but still all changes are made in the
> >> global node store.
> >>
> >> When I start sling with just a global node store and then create a
> >> symbolic like from the global NS to the segment node store factory name
> >> (appended role)  then Sling is not starting correctly.
> >>
> >> Cheers - Andy
>

Reply via email to