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