From 54430a87226096725b13f05326d08629420657ca Mon Sep 17 00:00:00 2001 From: Daniel Fuchs Date: Wed, 10 Dec 2025 15:14:46 +0000 Subject: [PATCH] 8373362: Http3TestServer should not log an exception stack trace when it is stopping normally Reviewed-by: jpai, djelinski --- .../test/lib/http3/Http3ServerExchange.java | 5 +++++ .../test/lib/http3/Http3TestServer.java | 19 ++++++++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/test/jdk/java/net/httpclient/lib/jdk/httpclient/test/lib/http3/Http3ServerExchange.java b/test/jdk/java/net/httpclient/lib/jdk/httpclient/test/lib/http3/Http3ServerExchange.java index 9a39ba4358d..c127abf3c0f 100644 --- a/test/jdk/java/net/httpclient/lib/jdk/httpclient/test/lib/http3/Http3ServerExchange.java +++ b/test/jdk/java/net/httpclient/lib/jdk/httpclient/test/lib/http3/Http3ServerExchange.java @@ -108,6 +108,11 @@ public final class Http3ServerExchange implements Http2TestExchange { rspheadersBuilder = new HttpHeadersBuilder(); } + Http3ServerConnection http3Connection() { + return serverConn; + } + + String connectionTag() { return serverConn.quicConnection().logTag(); } diff --git a/test/jdk/java/net/httpclient/lib/jdk/httpclient/test/lib/http3/Http3TestServer.java b/test/jdk/java/net/httpclient/lib/jdk/httpclient/test/lib/http3/Http3TestServer.java index ff76c67ed7e..6e81813cac3 100644 --- a/test/jdk/java/net/httpclient/lib/jdk/httpclient/test/lib/http3/Http3TestServer.java +++ b/test/jdk/java/net/httpclient/lib/jdk/httpclient/test/lib/http3/Http3TestServer.java @@ -55,6 +55,7 @@ import jdk.internal.net.http.http3.ConnectionSettings; import jdk.internal.net.http.http3.Http3Error; import jdk.internal.net.http.http3.frames.SettingsFrame; import jdk.internal.net.quic.QuicTLSContext; +import jdk.internal.net.quic.QuicTransportErrors; import jdk.internal.net.quic.QuicVersion; import static java.nio.charset.StandardCharsets.US_ASCII; @@ -261,7 +262,23 @@ public class Http3TestServer implements QuicServer.ConnectionAcceptor, AutoClose handler.handle(exchange); } catch (Throwable failure) { System.err.println("Failed to handle exchange: " + failure); - failure.printStackTrace(); + boolean noError = false; + if (exchange instanceof Http3ServerExchange http3ServerExchange) { + var quicConnection = http3ServerExchange.http3Connection().quicConnection(); + var cause = quicConnection.terminationCause(); + if (cause != null) { + var code = cause.getCloseCode(); + noError = cause.isAppLayer() + ? Http3Error.isNoError(code) + : code == QuicTransportErrors.NO_ERROR.code(); + } + } + // don't print the full stack trace if the connection + // is terminated with no error, in order to avoid + // cluttering the log. + if (!noError) { + failure.printStackTrace(); + } final var ioException = (failure instanceof IOException) ? (IOException) failure : new IOException(failure);