-
-
Notifications
You must be signed in to change notification settings - Fork 6.2k
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
cURL 8.1.0 POST fails, downgrading to 8.0.1 works as expected #11157
Comments
This comment was marked as off-topic.
This comment was marked as off-topic.
First: add |
Thanks, here is the call on v8.1.0:
The same call on v8.0.1:
|
@icing any ideas? |
Make send buffer smaller to have progress and "upload done" reporting closer to reality. Fix handling of send "drain" condition to no longer trigger once the transfer loop reports it is done sending. Also do not trigger the send "drain" on RST streams. Background: - a upload stall was reported in curl#11157 that timed out - test_07_33a reproduces a problem with such a stall if the server 404s the request and RSTs the stream. - test_07_33b verifies a successful PUT, using the parameters from curl#11157 and checks success
Please see #11165 as a possible fix to address this. I was not able to reproduce exactly this problem, but a related one and fixed that. In general, it seems your server is missing data from the curl client to send back an answer. Which is rather strange since both requests look the same, apart from the |
This comment was marked as off-topic.
This comment was marked as off-topic.
@AngryPhantom you have a different issue. Please don't hijack this issue. Yours is probably #11129 |
@bagder Oh, I'm sorry, didn't intend to hijack at all, just thought it was relevant (didn't search the issues thoroughly). Ok, will be waiting for the new release. Thank you. |
Once #11165 is implemented is there a snapshot windows binary build available to help test? |
Make send buffer smaller to have progress and "upload done" reporting closer to reality. Fix handling of send "drain" condition to no longer trigger once the transfer loop reports it is done sending. Also do not trigger the send "drain" on RST streams. Background: - a upload stall was reported in #11157 that timed out - test_07_33a reproduces a problem with such a stall if the server 404s the request and RSTs the stream. - test_07_33b verifies a successful PUT, using the parameters from #11157 and checks success Ref: #11157 Closes #11165
#11165 has been merged now, but I don't know of any provided builds of this for Windows |
Here are the binaries for the latest curl (and libssh2) master: |
Thank you for pointing me in the direction of the latest build. Unfortunately, #11165 didn't fix. Using build:
Same API call:
|
- refs curl#11157 and curl#11175 where uploads get stuck or lead to RST streams - fixes our h2 send behaviour to continue sending in the nghttp2 session as long as it wants to. This will empty our send buffer as long as the remote stream/connection window allows. - in case the window is exhausted, the data remaining in the send buffer will wait for a WINDOW_UPDATE from the server. Which is a socket event that engages our transfer loop again - the problem in the issue was that we did not exhaust the window, but left data in the sendbuffer and no further socket events did happen. The server was just waiting for us to send more. - relatedly, there was an issue fixed that closing a stream with KEEP_HOLD set kept the transfer from shutting down - as it should have - leading to a timeout.
Made myself a trello account and was able to replicate the issue. Curl is indeed stalling on the upload. Please see #11176 as a fix for this. |
- refs #11157 and #11175 where uploads get stuck or lead to RST streams - fixes our h2 send behaviour to continue sending in the nghttp2 session as long as it wants to. This will empty our send buffer as long as the remote stream/connection window allows. - in case the window is exhausted, the data remaining in the send buffer will wait for a WINDOW_UPDATE from the server. Which is a socket event that engages our transfer loop again - the problem in the issue was that we did not exhaust the window, but left data in the sendbuffer and no further socket events did happen. The server was just waiting for us to send more. - relatedly, there was an issue fixed that closing a stream with KEEP_HOLD set kept the transfer from shutting down - as it should have - leading to a timeout. Closes #11176
I've made fresh builds here: (I'll see if this can be made automated with reasonable effort.) |
SUCCESS!
Thank you again! |
I've added daily curl-for-win builds as an experiment. Runs at 20:29 UTC, with the current latest curl (and libssh2, and curl-for-win) sources. One download artifact is ~50MB. They are retained for 42 days. Let me know if any tweaks would these more useful: Binary package: They may be useful to check Windows-specific compiler warning/error fallouts, or verifying patch results like in this thread. |
Bookmarked, thank you @vszakats |
EDIT: The patch in 5c58cb0 resolves this issue. Hope it's released soon. This is still an issue in curl 8.1.1 that I'm experiencing through git. git gets stuck when trying to push a large commit. Curl version:
Git version:
Log:
|
Release 8.1.2 is planed for Tuesday. |
Unfortunately I sometimes still see the issue in 8.1.2 as well. It seems random:
|
My question would be if there are situations where the trello API takes long time to process an uploaded document and your 20 seconds are not sufficient. When the message "We are completely uploaded and fine" is printed, curl 8.1.2 has sent the complete request body and the EOF indicator to the server. After that it is waiting for the server to send the response. That does not seem to happen sometimes for you. There might still be an unforeseen condition lurking here. But I would be interested to know what results you get with a timeout of 60 seconds or more. |
In my script I actually have a 60 second timeout:
When it timed out, I ran it manually and didn't want to wait for all of the retries so I shortened the time. It really is random as I used the exact same file to upload and a few tries later it works. |
Thanks. What is the CPU usage you see while curl is timing out? I'd expect this to be almost 0, but we have #11242 reported, just checking. |
Ok I will check on the next incident |
I just re-created my TRELLO API key and tokens for testing and when I try your upload example of a document, it takes a long time for trello to send me back:
which points to a problem on the server side. Not sure, if this helps. But may you can reproduce when you test without timeout. |
Thank you for testing... was it longer than 60 seconds for the response? That is what I have in production and when it did fail all 4 retries at 60 seconds would fail. |
What I see is, for example:
|
Thanks, I will report back on the next incident |
Make send buffer smaller to have progress and "upload done" reporting closer to reality. Fix handling of send "drain" condition to no longer trigger once the transfer loop reports it is done sending. Also do not trigger the send "drain" on RST streams. Background: - a upload stall was reported in curl#11157 that timed out - test_07_33a reproduces a problem with such a stall if the server 404s the request and RSTs the stream. - test_07_33b verifies a successful PUT, using the parameters from curl#11157 and checks success Ref: curl#11157 Closes curl#11165
- refs curl#11157 and curl#11175 where uploads get stuck or lead to RST streams - fixes our h2 send behaviour to continue sending in the nghttp2 session as long as it wants to. This will empty our send buffer as long as the remote stream/connection window allows. - in case the window is exhausted, the data remaining in the send buffer will wait for a WINDOW_UPDATE from the server. Which is a socket event that engages our transfer loop again - the problem in the issue was that we did not exhaust the window, but left data in the sendbuffer and no further socket events did happen. The server was just waiting for us to send more. - relatedly, there was an issue fixed that closing a stream with KEEP_HOLD set kept the transfer from shutting down - as it should have - leading to a timeout. Closes curl#11176
Hi,
After upgrading to 8.1.0, a simple POST will timeout. The URL does not start with numbers as others have found.
API Call:
OS is Windows10
Simply downgrading back to 8.0.1 resolves.
Does anyone else have this issue? What can I do to help debug?
The text was updated successfully, but these errors were encountered: