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

Chetan Mehrotra edited comment on OAK-3395 at 9/14/15 9:44 AM:
---------------------------------------------------------------

Okie. So looks like JR2 did not allowed that 
[PathParser|https://github.com/apache/jackrabbit/blob/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/conversion/PathParser.java#L257]
 would throw exception for all non space whitespaces!

{code}
    public void testPathWithLineBreak() throws Exception{
        String relPath = "a\rb";
        Node n = testRootNode.addNode(relPath, "nt:folder");
        superuser.save();
    }
{code}

Fails with

{noformat}
Caused by: org.apache.jackrabbit.spi.commons.conversion.MalformedPathException: 
'a
b' is not a valid path. Whitespace other than SP (U+0020) not a allowed in a 
name, but U+000d was found at position 1.
        at 
org.apache.jackrabbit.spi.commons.conversion.PathParser.parse(PathParser.java:400)
        at 
org.apache.jackrabbit.spi.commons.conversion.PathParser.parse(PathParser.java:122)
        at org.apac
{noformat}

So should we do the same in Oak also? Would discuss this on DL


was (Author: chetanm):
Okie. So looks like JR2 did not allowed that 
[PathParser|https://github.com/apache/jackrabbit/blob/trunk/jackrabbit-spi-commons/src/main/java/org/apache/jackrabbit/spi/commons/conversion/PathParser.java#L257]
 would throw exception for all non space whitespaces!

{code}
    public void testPathWithLineBreak() throws Exception{
        String relPath = "a\rb";
        Node n = testRootNode.addNode(relPath, "nt:folder");
        superuser.save();
    }
{code}

Fails with

{noformat}
Caused by: org.apache.jackrabbit.spi.commons.conversion.MalformedPathException: 
'a
b' is not a valid path. Whitespace other than SP (U+0020) not a allowed in a 
name, but U+000d was found at position 1.
        at 
org.apache.jackrabbit.spi.commons.conversion.PathParser.parse(PathParser.java:400)
        at 
org.apache.jackrabbit.spi.commons.conversion.PathParser.parse(PathParser.java:122)
        at org.apac
{noformat}

So should we do the same in Oak also?

> RevisionGC fails for JCR paths having line feed characters
> ----------------------------------------------------------
>
>                 Key: OAK-3395
>                 URL: https://issues.apache.org/jira/browse/OAK-3395
>             Project: Jackrabbit Oak
>          Issue Type: Bug
>          Components: mongomk, rdbmk
>            Reporter: Chetan Mehrotra
>            Assignee: Chetan Mehrotra
>            Priority: Minor
>             Fix For: 1.3.7, 1.2.6, 1.0.21
>
>
> RevisionGC fails with error while processing any id (derived from JCR path) 
> having line feed or carriage return char
> This happens because it relies on Oak Commons StringSort and ExternalSort 
> which works with line delimited string and having an id with line break would 
> break this sorting logic. Error reported is like
> {noformat}
> java.lang.AssertionError: Invalid id /1442211320
>       at 
> org.apache.jackrabbit.oak.plugins.document.util.Utils.getDepthFromId(Utils.java:337)
>       at 
> org.apache.jackrabbit.oak.plugins.document.NodeDocumentIdComparator.compare(NodeDocumentIdComparator.java:38)
>       at 
> org.apache.jackrabbit.oak.plugins.document.NodeDocumentIdComparator.compare(NodeDocumentIdComparator.java:30)
>       at java.util.TimSort.countRunAndMakeAscending(TimSort.java:324)
>       at java.util.TimSort.sort(TimSort.java:203)
>       at java.util.TimSort.sort(TimSort.java:173)
>       at java.util.Arrays.sort(Arrays.java:659)
>       at java.util.Collections.sort(Collections.java:217)
>       at 
> org.apache.jackrabbit.oak.commons.sort.ExternalSort.sortAndSave(ExternalSort.java:279)
>       at 
> org.apache.jackrabbit.oak.commons.sort.ExternalSort.sortInBatch(ExternalSort.java:218)
>       at 
> org.apache.jackrabbit.oak.commons.sort.ExternalSort.sortInBatch(ExternalSort.java:257)
>       at 
> org.apache.jackrabbit.oak.commons.sort.StringSort$PersistentState.sort(StringSort.java:191)
>       at 
> org.apache.jackrabbit.oak.commons.sort.StringSort.sort(StringSort.java:88)
>       at 
> org.apache.jackrabbit.oak.plugins.document.VersionGarbageCollector$DeletedDocsGC.ensureSorted(VersionGarbageCollector.java:383)
>       at 
> org.apache.jackrabbit.oak.plugins.document.VersionGarbageCollector$DeletedDocsGC.getDocIdsToDelete(VersionGarbageCollector.java:274)
>       at 
> org.apache.jackrabbit.oak.plugins.document.VersionGarbageCollector$DeletedDocsGC.removeDeletedDocuments(VersionGarbageCollector.java:296)
>       at 
> org.apache.jackrabbit.oak.plugins.document.VersionGarbageCollector$DeletedDocsGC.removeDocuments(VersionGarbageCollector.java:241)
>       at 
> org.apache.jackrabbit.oak.plugins.document.VersionGarbageCollector.collectDeletedDocuments(VersionGarbageCollector.java:154)
>       at 
> org.apache.jackrabbit.oak.plugins.document.VersionGarbageCollector.gc(VersionGarbageCollector.java:105)
>       at 
> org.apache.jackrabbit.oak.plugins.document.VersionGCDeletionTest.gcWithPathsHavingNewLine(VersionGCDeletionTest.java:203)
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to