RFR: 8353013: java.net.URI.create(String) may have low performance to scan the host/domain name from URI string when the hostname starts with number [v3]

Michael McMahon michaelm at openjdk.org
Wed Apr 16 10:32:47 UTC 2025


On Wed, 16 Apr 2025 09:46:59 GMT, Rohitash <duke at openjdk.org> wrote:

>> `scanByte` throws `NumberFormatException` for URIs that start with numbers, e.g., https://11111111.x.y/
>> The current flow is `parseIPv4Address` → `scanIPv4Address` → `scanByte`. `parseIPv4Address` uses `NumberFormatException` for control flow, so it captures the exception, ignores it, and returns -1. This has been reported by AWS customer to cause low performance. Details: [JDK-8353013](https://bugs.openjdk.org/browse/JDK-8353013) & https://github.com/aws/aws-sdk-java-v2/issues/5933
>> 
>> This PR avoids NumberFormatException by skipping calls to `Integer.parseInt` if the number of digits in the octet is > 3.
>> 
>> 
>> I ran following tests.
>> 
>> make test-tier1
>> make test-tier2
>> make test TEST=jdk/java/net
>
> Rohitash has updated the pull request incrementally with one additional commit since the last revision:
> 
>   improve jmh benchmark

This looks like a useful improvement. LGTM.

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

Marked as reviewed by michaelm (Reviewer).

PR Review: https://git.openjdk.org/jdk/pull/24295#pullrequestreview-2772027123


More information about the net-dev mailing list