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 "Stefan Egli (JIRA)" <ji...@apache.org> on 2019/04/04 13:10:00 UTC

[jira] [Comment Edited] (OAK-8141) Replace String path with custom data type

    [ https://issues.apache.org/jira/browse/OAK-8141?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16809828#comment-16809828 ] 

Stefan Egli edited comment on OAK-8141 at 4/4/19 1:09 PM:
----------------------------------------------------------

bq. I did not change the contract of Path.getParent(). With a relative path the first element does not have to be the root anymore and Path.isRoot() cannot be used for this purpose.
Ok. Might also have been a bit a bigger and risky change, agreed. 

So what about changing the current pattern, eg
{noformat}
        Path parent = path.getParent();
        return parent != null
{noformat}
which used to be
{noformat}
return !denotesRoot(path)
{noformat}
with
{noformat}
return path.isRoot()
{noformat}

Ah, I see, because the full expression is
{noformat}
Path parent = path.getParent();
        return parent != null
                && isChildUnchanged(from, to, parent, path.getName());
{noformat}
and that {{parent}} is needed afterwards anyway .. so guarding it with an explicit NP check looks safer..


was (Author: egli):
bq. I did not change the contract of Path.getParent(). With a relative path the first element does not have to be the root anymore and Path.isRoot() cannot be used for this purpose.
Ok. Might also have been a bit a bigger and risky change, agreed. 

So what about changing the current pattern, eg
{noformat}
        Path parent = path.getParent();
        return parent != null
{noformat}
which used to be
{noformat}
return !denotesRoot(path)
{noformat}
with
{noformat}
return path.isRoot()
{noformat}

> Replace String path with custom data type
> -----------------------------------------
>
>                 Key: OAK-8141
>                 URL: https://issues.apache.org/jira/browse/OAK-8141
>             Project: Jackrabbit Oak
>          Issue Type: Improvement
>          Components: documentmk
>            Reporter: Marcel Reutegger
>            Assignee: Marcel Reutegger
>            Priority: Major
>             Fix For: 1.12.0
>
>         Attachments: OAK-8141.patch
>
>
> DocumentNodeState objects and other related data is currently identified with a String path in the various caches in the DocumentNodeStore. Read benchmarks like GetDeepNodeTest that only read data from memory are significantly slower on a DocumentNodeStore compared to a SegmentNodeStore. In these kind of tests the DocumentNodeStore is usually busy with String operations like constructing the path for a child node or calculating the hash code for a lookup in a cache.
> This issue is about a potential improvement that replaces the use of a plain String for the path of a DocumentNodeState and use a custom Path type instead.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)