-
-
Notifications
You must be signed in to change notification settings - Fork 6.4k
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
http2, refused stream handling for retry #12054
Conversation
icing
commented
Oct 7, 2023
- answer HTTP/2 streams refused via a GOAWAY from the server to respond with CURLE_RECV_ERROR in order to trigger a retry on another connection
- refs Failed sending HTTP/2 data to the peer #11859
- answer HTTP/2 streams refused via a GOAWAY from the server to respond with CURLE_RECV_ERROR in order to trigger a retry on another connection - refs curl#11859
Thanks for this fix. Can you take a look at this #12050 libcurl with multi http3 handle, after timeout error, the follow request repeat timeout error until max idle age expired. (or use new CURLM create request) seems the new timeout error keep "max idle age" not expired, so if there is new request one by one, you will always get timeout error and no chance create new connection. |
Thanks for the change! I gave this a try. Throughout I have used an nginx setting of "keepalive_requests 3;" which is unrealistic but helps exercise the problem. First, good news: this change makes requests of size 5 succeed 100% of the time for me. Bad news: There is another problem with larger requests. When I increase to 20 requests (not 19 or lower) I get an error that says: curl: (56) Connection died, tried 5 times before giving up In a larger trial of 10,000 requests only about 1/3rd succeed with 2/3rds of the request failing with the above error. Note unrealistic nginx settings here. I really do not like this next part but I triple checked that it's accurate. If I invoke curl with traces turned on like this: Here is a trace, sorry it's so large but it has to be. |
Lines 1810 to 1816 in 6fa1d81
I might be missing something but isn't it doing what is expected. Here's the first section with that error, filtered for
|
I get more than 100 of thousands error 55 GOAWAY report every day from firebase, hope this get totally fixed soon. |
I wrote an example here: https://github.com/black-desk/curl-11859 This example works very fine with this PR. |
I am not sure this test case suit for this problem. easy handle should create one after one to trigger it . (not create all easy handle at once) Is this test case verify the problem with 8.3.0 ? |
The problem is identified to be a GOAWAY on the connection or connections libcurl wants to use, it seems unrelated to how many easy handles that are used. |
Since this PR fixes the immediate initial problem it is now merged. There might be more to do, but lets deal with that in follow-up PRs. |
This test failed with 8.3.0. |