-
Notifications
You must be signed in to change notification settings - Fork 309
Description
Brief Summary
If a HTTP/2 client process is forcably killed (like pressing CTRL-C in Windows Terminal), Payara prints a stack trace into server.log
.
This stack trace makes not much sense, as this is not a bug, it is expected behavior in HTTP/2. Neither the server administrator nor the server developer can't do anything to prevent clients from behaving like this. So while it might be interesting to see this event in the log, there is no benefit from having a stack trace.
Expected Outcome
Either no log entry at all, or just a warning like Client closed TCP connection before server could send GOAWAY.
.
Current Outcome
[2025-03-26T09:50:00.544+0100] [Payara 6.2025.1] [WARNUNG] [] [org.glassfish.grizzly.http2.Http2Session] [tid: _ThreadID=85 _ThreadName=http-thread-pool::http-listener-1(2)] [timeMillis: 1742979000544] [levelValue: 900] [[
Unable to write GOAWAY. Terminating session.
java.io.EOFException
at org.glassfish.grizzly.nio.transport.TCPNIOTransport.read(TCPNIOTransport.java:594)
at org.glassfish.grizzly.nio.transport.TCPNIOTransportFilter.handleRead(TCPNIOTransportFilter.java:59)
at org.glassfish.grizzly.filterchain.TransportFilter.handleRead(TransportFilter.java:133)
at org.glassfish.grizzly.ssl.SSLBaseFilter$SSLTransportFilterWrapper.handleRead(SSLBaseFilter.java:927)
at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:88)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:246)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:178)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:118)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:96)
at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:51)
at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:510)
at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:82)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:83)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:101)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:535)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:515)
at java.base/java.lang.Thread.run(Unknown Source)
]]
Reproducer
@GET @Path("helloworld")
public String helloworld() {
return "helloworld";
}
On Windows install original cURL (don't use curl
Powershell alias), start cURL --http2 https://my-payara.my-domain.local/helloworld?i=[1-100000]
then press CTRL-C to hard-kill that task.
Operating System
Windows 10 Pro
JDK Version
Zulu 17 (64 Bit)
Payara Distribution
Payara Server Full Profile