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