Skip to content
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

x/net/http2: connection-level flow control not returned if stream errors, causes server hang [1.14 backport] #41386

Closed
gopherbot opened this issue Sep 14, 2020 · 7 comments

Comments

@gopherbot
Copy link

@gopherbot gopherbot commented Sep 14, 2020

@ianlancetaylor requested issue #40423 to be considered for backport to the next 1.14 minor release.

@gopherbot Please open backport issues.

This problem can reportedly cause an HTTP/2 connection to hang. There doesn't seem to be any reasonable workaround.

@gopherbot
Copy link
Author

@gopherbot gopherbot commented Sep 30, 2020

Change https://golang.org/cl/258497 mentions this issue: [release-branch.go1.14] net/http2: send WINDOW_UPDATE on a body's write failure

@gopherbot
Copy link
Author

@gopherbot gopherbot commented Sep 30, 2020

Change https://golang.org/cl/258537 mentions this issue: [release-branch.go1.14] net/http: backport HTTP2 send WINDOW_UPDATE on a body's write failure

@gopherbot
Copy link
Author

@gopherbot gopherbot commented Sep 30, 2020

Change https://golang.org/cl/258538 mentions this issue: [release-branch.go1.14] net/http: backport HTTP2 send WINDOW_UPDATE on a body's write failure

@dmitshur
Copy link
Contributor

@dmitshur dmitshur commented Oct 8, 2020

We've considered this in a release meeting. Approving as it is a serious issue without a workaround. This backport applies to both 1.15 (#41387) and 1.14 (this issue).

gopherbot pushed a commit to golang/net that referenced this issue Oct 12, 2020
…te failure

When the body.Write fails during processData, the connection flow
control must be updated to account for the data received. The connection's
WINDOW_UPDATE should reflect the amount of data that was not successfully
written. The stream is about to be closed, so no update is required.

Updates golang/go#40423.
Fixes golang/go#41386.

Change-Id: I546597cedf3715e6617babcb3b62140bf1857a27
Reviewed-on: https://go-review.googlesource.com/c/net/+/245158
Reviewed-by: Emmanuel Odeke <emm.odeke@gmail.com>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Run-TryBot: Emmanuel Odeke <emm.odeke@gmail.com>
TryBot-Result: Go Bot <gobot@golang.org>
Trust: Emmanuel Odeke <emm.odeke@gmail.com>
(cherry picked from commit 5d4f700)
Reviewed-on: https://go-review.googlesource.com/c/net/+/258497
Trust: Dmitri Shuralyov <dmitshur@golang.org>
Run-TryBot: Dmitri Shuralyov <dmitshur@golang.org>
@gopherbot

This comment has been hidden.

@gopherbot gopherbot closed this Oct 12, 2020
@dmitshur dmitshur reopened this Oct 12, 2020
@gopherbot gopherbot closed this Oct 12, 2020
@dmitshur
Copy link
Contributor

@dmitshur dmitshur commented Oct 12, 2020

Reopening for updating vendored and bundled copies in the standard library.

@dmitshur dmitshur reopened this Oct 12, 2020
@toothrot toothrot modified the milestones: Go1.14.10, Go1.14.11 Oct 14, 2020
gopherbot pushed a commit that referenced this issue Oct 22, 2020
…undle.go

Features CL:

    net/http2: send WINDOW_UPDATE on a body's write failure (fixes #41386)
    https://golang.org/cl/258497

Created by:

go get -d golang.org/x/net@release-branch.go1.14
go mod tidy
go mod vendor
go generate -run=bundle std

Updates #40423
Fixes #41386

Change-Id: I3e75527d381dd4c4262db5f2ff755029d448c48b
Reviewed-on: https://go-review.googlesource.com/c/go/+/258538
Run-TryBot: Emmanuel Odeke <emm.odeke@gmail.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
Trust: Emmanuel Odeke <emm.odeke@gmail.com>
TryBot-Result: Go Bot <gobot@golang.org>
@dmitshur
Copy link
Contributor

@dmitshur dmitshur commented Oct 22, 2020

Closed by merging 7bc8381 to release-branch.go1.14.

@dmitshur dmitshur closed this Oct 22, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
3 participants