New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
GOAWAY http/2 frame intermittently observed on high traffic on adding idleTimeout #2649
Comments
@owaiscs001 Please provide reproducible example. |
Hi @violetagg, Providing a reproducible example is difficult because of my application size. Any help here would be appreciated. |
@owaiscs001 Try to enable |
Hi @violetagg , While investigating this issue I came across the following ticket which was raised for reactor netty to send GOAWAY frame when idleTimeout occurs. The fix for the above issue was available in v1.0.23, which I was using for my testing and in this version I observed the issue i.e. idletimeout getting kicked even if connection has traffic. Post this I fallback to v1.0.21, where the GOAWAY fix is not present. And there I didn't saw the problem.
Hence, looks like the fix for ticket 2412 (47deeb2) has broken this behavior. Could you please take a look and provide your feedback. |
@owaiscs001 You are not able to observe this issue with Please at least provide some logs from the failure. |
also specify whether you use:
|
Do you see log entry like the one below in the log file. If yes provide all log entries that contain the corresponding connection id.
More about how to correlate with connection id you can find here https://projectreactor.io/docs/netty/release/reference/index.html#_http2_3 |
Hi @violetagg I am using H2C. For more reference I'm attaching the entire log for one connection. |
Hi @violetagg Could you please provide some inputs on why this behavior occurs? |
@owaiscs001 Based on the logs it seems that your server is configured with H2C and HTTP/1.1. I did some code review and I think I found one potential issue. I'll create a PR. Are you able to test a PR or to test a SNAPSHOT version? |
Hi @violetagg Yes I will test the snapshot version. Thanks |
- When the server is configured with HTTP/1.1 and H2C ensure Http2MultiplexHandler is at the end of the pipeline because this handler doesn't forward all channelRead events. - When the server is configured with HTTP/1.1 and H2 and the client sends HTTP/1.1, when channelActive event happens, HttpTrafficHandler is still not in the pipeline. In this use case add IdleTimeoutHandler when HttpTrafficHandler is added to the pipeline. Fixes #2649
@owaiscs001 |
Hi @violetagg We have done testing on Our Test: Our Observation: At the log level |
@owaiscs001 Without a reproducible example I'm out of ideas. The tests that I added do not show the behaviour in your logs. |
@owaiscs001 If you try to enable
More about |
Hi Hi @violetagg, Thanks for the fix. Received this log Can you please share when you will be publishing 1.0.28 |
That's amazing!
Our temporary plans are for 14.02 |
Problem statement
While sending the high traffic(same message and payload) we observed some 503 intermittently.
Further we collected tcpdump in the same time interval and observed a GOAWAY http/2 frame sent by netty server after every 10 min.
We have set idleTimeout = 600000 using below mentioned addServerCustomizers
'''factory.addServerCustomizers(httpServer -> httpServer.idleTimeout(Duration.ofMillis(idleTimeout)));'''
In the next test we changed idleTimeout idleTimeout = 420000 and observed GOAWAY http/2 frame in tcpdump after every 3 min 23 sec and 3 min 37 sec alternately.
In the next test we disabled idleTimeout by commenting the addServerCustomizers and 503 was not observed further.
'''//factory.addServerCustomizers(httpServer -> httpServer.idleTimeout(Duration.ofMillis(idleTimeout)));'''
Expected Behavior
If traffic is running then netty must not send a GOAWAY http/2 frame.
Actual Behavior
Netty send a GOAWAY http/2 frame in running traffic after idleTimeout.
Also can you provide some help on how to debug this issue.
netty
, ...): (spring-boot-starter-webflux:2.7.4, spring-boot-starter:2.7.4 (), spring-boot-starter-json:2.7.4 (), spring-boot-starter-reactor-netty:2.7.4)+--- org.springframework.boot:spring-boot-starter-webflux:2.7.4
| +--- org.springframework.boot:spring-boot-starter:2.7.4 ()
| +--- org.springframework.boot:spring-boot-starter-json:2.7.4 ()
| +--- org.springframework.boot:spring-boot-starter-reactor-netty:2.7.4
| | --- io.projectreactor.netty:reactor-netty-http:1.0.23
java -version
): 17.0.5uname -a
): LinuxThe text was updated successfully, but these errors were encountered: