You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Mateusz Nowakowski (JIRA)" <ji...@apache.org> on 2016/06/23 07:55:16 UTC

[jira] [Created] (CAMEL-10085) UnsafeUriCharactersEncoder.checkRAW compiles regex pattern every call

Mateusz Nowakowski created CAMEL-10085:
------------------------------------------

             Summary: 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


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)