[ 
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)

Reply via email to