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