[
https://issues.apache.org/jira/browse/SLING-10088?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17275712#comment-17275712
]
Timothee Maret commented on SLING-10088:
----------------------------------------
PR
[#46|https://github.com/apache/sling-org-apache-sling-distribution-core/pull/46]
changed the way FileVault [DefaultPathFilter#isAbsolute
|https://github.com/apache/jackrabbit-filevault/blob/master/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/filter/DefaultPathFilter.java#L99-L101]
and
[DefaultPathFilter#translate|https://github.com/apache/jackrabbit-filevault/blob/master/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/filter/DefaultPathFilter.java#L107-L121]
quake. Those methods decide if a path is absolute by checking if the pattern
starts with a {{/}}. This implementation fails when providing a quoted path
like in PR
[#46|https://github.com/apache/sling-org-apache-sling-distribution-core/pull/46].
This should be fixed in FileVault by using a matcher to decide absolute path
instead of comparing the pattern string.
We could work around this issue in Sling while still quoting specials chars
(this issue) with something along the lines of
{code}
if (path.startsWith("/")) {
return "/" + Pattern.quote(path.substring(1));
} else {
return Pattern.quote(path);
}
{code}
> PatternSyntaxException: Unclosed group near index x
> ---------------------------------------------------
>
> Key: SLING-10088
> URL: https://issues.apache.org/jira/browse/SLING-10088
> Project: Sling
> Issue Type: Bug
> Components: Content Distribution
> Affects Versions: Content Distribution Core 0.4.2
> Reporter: Christian Schneider
> Assignee: Christian Schneider
> Priority: Critical
> Fix For: Content Distribution Core 0.4.4
>
> Time Spent: 0.5h
> Remaining Estimate: 0h
>
> if a path contains a "(" the following exception will occur when we try to
> distribute it.
> As far as I can tell the problem is a missing escaping of the path in
> org.apache.sling.distribution.serialization.impl.vlt.VltUtils.createFilter.
> {code:java}
> [org.apache.sling.distribution.core:0.4.3.T20200720-c96d3fb] at
> org.apache.sling.distribution.journal.impl.publisher.PackageMessageFactory.createAdd(PackageMessageFactory.java:95)
> [org.apache.sling.distribution.journal:0.2.0.T202009251421-0284693]
> at
> org.apache.sling.distribution.journal.impl.publisher.PackageMessageFactory.create(PackageMessageFactory.java:86)
> [org.apache.sling.distribution.journal:0.2.0.T202009251421-0284693]
> at
> org.apache.sling.distribution.journal.impl.publisher.DistributionPublisher.lambda$execute$1(DistributionPublisher.java:271)
> [org.apache.sling.distribution.journal:0.2.0.T202009251421-0284693]
> at
> org.apache.sling.distribution.journal.shared.DistributionMetricsService.timed(DistributionMetricsService.java:147)
> [org.apache.sling.distribution.journal:0.2.0.T202009251421-0284693]
> at
> org.apache.sling.distribution.journal.impl.publisher.DistributionPublisher.execute(DistributionPublisher.java:270)
> [org.apache.sling.distribution.journal:0.2.0.T202009251421-0284693]
> at
> org.apache.sling.distribution.journal.impl.publisher.DistributionPublisher.execute(DistributionPublisher.java:259)
> [org.apache.sling.distribution.journal:0.2.0.T202009251421-0284693]
> at
> org.apache.sling.distribution.impl.DefaultDistributor.distribute(DefaultDistributor.java:60)
> [org.apache.sling.distribution.core:0.4.3.T20200720-c96d3fb] at
> org.apache.sling.distribution.chunked.ChunkedDistribution.distributeChunk(ChunkedDistribution.java:124)
> [org.apache.sling.distribution.chunked:0.1.0.20210121164255060] at
> org.apache.sling.distribution.chunked.ChunkedDistribution.distribute(ChunkedDistribution.java:102)
> [org.apache.sling.distribution.chunked:0.1.0.20210121164255060] at
> org.apache.sling.distribution.chunked.ChunkedDistribution.process(ChunkedDistribution.java:72)
> [org.apache.sling.distribution.chunked:0.1.0.20210121164255060] at
> org.apache.sling.event.impl.jobs.queues.JobQueueImpl.startJob(JobQueueImpl.java:293)
> [org.apache.sling.event:4.2.12] at
> org.apache.sling.event.impl.jobs.queues.JobQueueImpl.access$100(JobQueueImpl.java:60)
> [org.apache.sling.event:4.2.12] at
> org.apache.sling.event.impl.jobs.queues.JobQueueImpl$1.run(JobQueueImpl.java:229)
> [org.apache.sling.event:4.2.12] at
> java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
> at
> java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
> at java.base/java.lang.Thread.run(Thread.java:834)Caused by:
> java.util.regex.PatternSyntaxException: Unclosed group near index
> 20/nodewith(shouldwork at
> java.base/java.util.regex.Pattern.error(Pattern.java:2027) at
> java.base/java.util.regex.Pattern.accept(Pattern.java:1877) at
> java.base/java.util.regex.Pattern.group0(Pattern.java:3060) at
> java.base/java.util.regex.Pattern.sequence(Pattern.java:2123) at
> java.base/java.util.regex.Pattern.expr(Pattern.java:2068) at
> java.base/java.util.regex.Pattern.compile(Pattern.java:1782) at
> java.base/java.util.regex.Pattern.<init>(Pattern.java:1428) at
> java.base/java.util.regex.Pattern.compile(Pattern.java:1068) at
> org.apache.jackrabbit.vault.fs.filter.DefaultPathFilter.setPattern(DefaultPathFilter.java:68)
> [org.apache.jackrabbit.vault:3.4.0] at
> org.apache.jackrabbit.vault.fs.filter.DefaultPathFilter.<init>(DefaultPathFilter.java:48)
> [org.apache.jackrabbit.vault:3.4.0] at
> org.apache.sling.distribution.serialization.impl.vlt.VltUtils.createFilter(VltUtils.java:92)
> [org.apache.sling.distribution.core:0.4.3.T20200720-c96d3fb] at
> org.apache.sling.distribution.serialization.impl.vlt.FileVaultContentSerializer.exportToStream(FileVaultContentSerializer.java:115)
> [org.apache.sling.distribution.core:0.4.3.T20200720-c96d3fb] ... 21
> common frames omitted
> {code}
>
--
This message was sent by Atlassian Jira
(v8.3.4#803005)