On Fri, 7 Nov 2025 15:07:13 GMT, Daniel Fuchs <[email protected]> wrote:

>> src/java.net.http/share/classes/jdk/internal/net/http/quic/QuicConnectionImpl.java
>>  line 596:
>> 
>>> 594:                 if (Log.errors()) {
>>> 595:                     Log.logError("%s QUIC handshake failed: %s"
>>> 596:                             .formatted(logTag(), message(cause)));
>> 
>> I think we don't need the new `message(...)` method here. Perhaps just doing:
>> 
>> Log.logError("%s QUIC handshake failed: %s".formatted(logTag(), cause));
>> 
>> is enough? For example, in jshell I see the following:
>> 
>> 
>> jshell> Throwable x = new Throwable()
>> jshell> Throwable y = new Throwable("foo bar")
>> 
>> jshell> "%s QUIC handshake failed: %s".formatted("tag", x)
>> $5 ==> "tag QUIC handshake failed: java.lang.Throwable"
>> 
>> jshell> "%s QUIC handshake failed: %s".formatted("tag", y)
>> $6 ==> "tag QUIC handshake failed: java.lang.Throwable: foo bar"
>
> Right - the reason I did that originally is that I thought we might get a 
> non-exported exception here. But I see that the terminator already translate 
> the QuicTransportException before completing the handshake.

Done

>> test/jdk/java/net/httpclient/http3/H3LogHandshakeErrors.java line 126:
>> 
>>> 124:         final HttpRequest.Builder reqBuilder = 
>>> HttpRequest.newBuilder(reqURI)
>>> 125:                 .version(HTTP_3);
>>> 126:         Logger serverLogger = 
>>> Logger.getLogger("jdk.httpclient.HttpClient");
>> 
>> Should we add a reachability fence for this `serverLogger`?
>
> Good point. When I started coding I thought it would be used in the finally 
> block but in the end I forgot about it.

I stuck it in a static field and renamed it to clientLogger.

>> test/jdk/java/net/httpclient/http3/H3LogHandshakeErrors.java line 132:
>> 
>>> 130:             @Override
>>> 131:             public void publish(LogRecord record) {
>>> 132:                 record.getSourceClassName();
>> 
>> Is this line a leftover? Or does it intentionally call this method and not 
>> use the return value?
>
> It does intentionally call it to force the LogRecord to infer the caller at 
> the right place. Inferring the caller has to happen in the handler to ensure 
> the right caller will be found.

added a comment

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

PR Review Comment: https://git.openjdk.org/jdk/pull/28196#discussion_r2504141697
PR Review Comment: https://git.openjdk.org/jdk/pull/28196#discussion_r2504137443
PR Review Comment: https://git.openjdk.org/jdk/pull/28196#discussion_r2504140582

Reply via email to