You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-issues@jackrabbit.apache.org by "Tomek Rękawek (JIRA)" <ji...@apache.org> on 2017/08/24 11:12:00 UTC

[jira] [Created] (OAK-6585) Allow to use patterns in the Mount#pathSupportingFragments

Tomek Rękawek created OAK-6585:
----------------------------------

             Summary: Allow to use patterns in the Mount#pathSupportingFragments
                 Key: OAK-6585
                 URL: https://issues.apache.org/jira/browse/OAK-6585
             Project: Jackrabbit Oak
          Issue Type: Improvement
          Components: composite, core-spi
            Reporter: Tomek Rękawek
             Fix For: 1.8


The pathSupportingFragments field allows to configure subtrees under which the nodes with names containing {{oak:mount-MOUNT_NAME}} fragment are redirected to a non-default mount.

It's used when running Oak on composite node store - in this case, the indexing data have to be split between different node stores and setting the pathSupportingFragments to {{/oak:index}} allows to do this.

However, in terms of the composite node store performance, this option is pretty expensive. Setting it on a low-level path like {{/oak:index}} means that all the node states below this path has to be wrapped with the CompositeNodeState objects and we can't fallback to the native Segment/DocumentNodeStates. For example, the node:

{noformat}
/oak:index/lucene
{noformat}

has to be composite, because it's children may belong to the default ({{:index}}) or non-default store ({{:oak:mount-libs-index}}. However the children themselves doesn't need to be wrapped anymore.

In order to improve this, we should support patterns in the {{pathSupportingFragments}} entries. The pattern is a normal path, but supporting two special characters:

* {{*}} - matches a sequence of characters different than {{/}},
* {{$}} - matches the end of the path.

Then, we can define the pathSupportingFragments with the following pattern:

{noformat}
/oak:index/*$
{noformat}

For example, it'll match following paths:

{noformat}
/oak:index/uuid
/oak:index/lucene
{noformat}

but not these:

{noformat}
/oak:index
/oak:index/uuid/:index
{noformat}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)