You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Claus Ibsen (JIRA)" <ji...@apache.org> on 2016/07/01 07:24:11 UTC
[jira] [Commented] (CAMEL-10085)
UnsafeUriCharactersEncoder.checkRAW compiles regex pattern every call
[ https://issues.apache.org/jira/browse/CAMEL-10085?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15358560#comment-15358560 ]
Claus Ibsen commented on CAMEL-10085:
-------------------------------------
A PR is also welcome
http://camel.apache.org/contributing
> UnsafeUriCharactersEncoder.checkRAW compiles regex pattern every call
> ----------------------------------------------------------------------
>
> Key: CAMEL-10085
> URL: https://issues.apache.org/jira/browse/CAMEL-10085
> Project: Camel
> Issue Type: Improvement
> Affects Versions: 2.17.1
> Reporter: Mateusz Nowakowski
> Assignee: Andrea Cosentino
> Priority: Minor
> Fix For: 2.17.3, 2.18.0
>
>
> UnsafeUriCharactersEncoder.checkRAW compile regex pattern every time it is called (and it is called really often due to stack:
> DefaultCamelContext.normalizeEndpointUri() -> URISUpport.normalizeUri() -> org.apache.camel.util.UnsafeUriCharactersEncoder.encode() -> checkRaw() -> Pattern.compile())
> Under high load it leads to decrease performance.
> The easiest fix is to precompile pattern:
> {code}
> private static Pattern RAW_PATTERN = Pattern.compile("RAW\\([^\\)]+\\)");
> (....)
> private static List<Pair> checkRAW(String s) {
> Matcher matcher = RAW_PATTERN.matcher(s);
> List<Pair> answer = new ArrayList<Pair>();
> // Check all occurrences
> while (matcher.find()) {
> answer.add(new Pair(matcher.start(), matcher.end()));
> }
> return answer;
> }
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)