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 >