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 2016/06/15 15:20:09 UTC

[jira] [Commented] (OAK-4473) MarkSweepGarbageCollector#saveBatchToFile should escape IDs

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

Chetan Mehrotra commented on OAK-4473:
--------------------------------------

[~jsedding] This looks duplicate of OAK-4441 which has been recently fixed by [~amitjain]

> MarkSweepGarbageCollector#saveBatchToFile should escape IDs
> -----------------------------------------------------------
>
>                 Key: OAK-4473
>                 URL: https://issues.apache.org/jira/browse/OAK-4473
>             Project: Jackrabbit Oak
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 1.0.31, 1.4.3, 1.5.3, 1.2.16
>            Reporter: Julian Sedding
>            Assignee: Julian Sedding
>
> Datastore garbage collection (DS GC) can fail if it encounters IDs containing backslashes. This can happen e.g. when a file gets uploaded and by mistake it's absolute (windows) path is stored as file name. 
> This is because IDs are written to temporary files and then sorted. The sorting algorithm assumes the lines to be escaped and throws an exception otherwise.
> {noformat}
> org.apache.jackrabbit.oak.plugins.blob.MarkSweepGarbageCollector Blob garbage collection error
> java.lang.IllegalArgumentException: Unexpected char [J] found at 78 of [92c3bcd2270655a9c911bec9f7a4851860f05c79#553941,/content/dam/\\MAPPED_DRIVE\JOHN$\ABC.pdf]. Expected '\' or 'r' or 'n
>         at org.apache.jackrabbit.oak.commons.sort.EscapeUtils.unescape(EscapeUtils.java:126)
>         at org.apache.jackrabbit.oak.commons.sort.EscapeUtils.unescapeLineBreaks(EscapeUtils.java:51)
>         at org.apache.jackrabbit.oak.commons.sort.ExternalSort.readLine(ExternalSort.java:633)
>         at org.apache.jackrabbit.oak.commons.sort.ExternalSort.sortInBatch(ExternalSort.java:204)
>         at org.apache.jackrabbit.oak.commons.sort.ExternalSort.sortInBatch(ExternalSort.java:257)
>         at org.apache.jackrabbit.oak.commons.sort.ExternalSort.sortInBatch(ExternalSort.java:159)
>         at org.apache.jackrabbit.oak.plugins.blob.GarbageCollectorFileState.sort(GarbageCollectorFileState.java:147)
>         at org.apache.jackrabbit.oak.plugins.blob.MarkSweepGarbageCollector.iterateNodeTree(MarkSweepGarbageCollector.java:538)
>         at org.apache.jackrabbit.oak.plugins.blob.MarkSweepGarbageCollector.mark(MarkSweepGarbageCollector.java:278)
>         at org.apache.jackrabbit.oak.plugins.blob.MarkSweepGarbageCollector.markAndSweep(MarkSweepGarbageCollector.java:248)
>         at org.apache.jackrabbit.oak.plugins.blob.MarkSweepGarbageCollector.collectGarbage(MarkSweepGarbageCollector.java:163)
>         at org.apache.jackrabbit.oak.plugins.blob.BlobGC$1.call(BlobGC.java:87)
>         at org.apache.jackrabbit.oak.plugins.blob.BlobGC$1.call(BlobGC.java:83)
>         at java.util.concurrent.FutureTask.run(FutureTask.java:266)
>         at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
>         at java.lang.Thread.run(Thread.java:745)
> {noformat}



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