Issue 8305763 : Using underscores in the name for a URI triggers a silent 
exception in the java standard library, which consumes 5% of the CPU.

Exception:
java.net.URISyntaxException: Illegal character in hostname at index N: 
xyz1_abcd.com
    at java.base/java.net.URI$Parser.fail(URI.java:2943)
    at java.base/java.net.URI$Parser.parseHostname(URI.java:3487)
    at java.base/java.net.URI$Parser.parseServer(URI.java:3329)
    
    This exception is silent and does not produce any messages, except for ODP 
profiler, there is no other evidence that it’s happening (the stack trace above 
was printed after changes to Java library). The reason for this is because of 
how the URI creation is implemented in the java.net.URI class. There are two 
paths for creating a valid URI, and one of them goes through an exception.

We can see that if parseServer fails, there is still a way the authority gets 
assigned and we don’t throw an exception from the method. This means, not being 
able to parse the server is ok and the exception is silenced. In our case, the 
server parsing fails because we find an illegal character, as only alphanumeric 
and dash characters are allowed.

-------------

Commit messages:
 - Parsing a URI with an underscore goes through a silent exception, negatively 
impacting performance

Changes: https://git.openjdk.org/jdk/pull/13430/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=13430&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8305763
  Stats: 16 lines in 1 file changed: 16 ins; 0 del; 0 mod
  Patch: https://git.openjdk.org/jdk/pull/13430.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/13430/head:pull/13430

PR: https://git.openjdk.org/jdk/pull/13430

Reply via email to