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 "Chetan Mehrotra (JIRA)" <ji...@apache.org> on 2015/09/14 11:44:46 UTC

[jira] [Comment Edited] (OAK-3395) RevisionGC fails for JCR paths having line feed characters

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