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: http.Server.WriteTimeout does not fire if the http2 stream's window is out of space. [1.16 backport] #50449

Closed
cagedmantis opened this issue Jan 5, 2022 · 4 comments
Labels
CherryPickApproved Used during the release process for point releases FrozenDueToAge
Milestone

Comments

@cagedmantis
Copy link
Contributor

@cagedmantis requested issue #49741 to be considered for backport to the next 1.16 minor release.

@gopherbot Please open a backport issue for Go 1.16.

@gopherbot
Copy link
Contributor

Change https://golang.org/cl/375718 mentions this issue: [internal-branch.go1.16-vendor] http2: prioritize RST_STREAM frames in random write scheduler

gopherbot pushed a commit to golang/net that referenced this issue Jan 6, 2022

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
…n random write scheduler

The http2 random write scheduler should not queue RST_STREAM
frames with the DATA frames, and instead treat them as control frames.

There can be deadlock situations if data frames block the queue,
because if the sender wants to close the stream it sends an RST frame,
but if the client is not draining the queue, the RST frame is stuck
and the sender is not able to finish.

For golang/go#49741
Updates golang/go#50449

Change-Id: I0940a76d1aad95f1c4d3856e4d79cf5ce2a78ff2
Reviewed-on: https://go-review.googlesource.com/c/net/+/367154
Trust: Dave Cheney <dave@cheney.net>
Reviewed-by: Damien Neil <dneil@google.com>
Trust: Damien Neil <dneil@google.com>
Run-TryBot: Damien Neil <dneil@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
(cherry picked from commit 04296fa)
Reviewed-on: https://go-review.googlesource.com/c/net/+/375718
Run-TryBot: Carlos Amedee <carlos@golang.org>
Trust: Dmitri Shuralyov <dmitshur@golang.org>
@gopherbot
Copy link
Contributor

Change https://golang.org/cl/375815 mentions this issue: [release-branch.go1.16] net/http: update bundled golang.org/x/net/http2

@cagedmantis
Copy link
Contributor Author

This backport has been approved as it is a serious issue without a workaround.

@gopherbot
Copy link
Contributor

Closed by merging 0551247 to release-branch.go1.16.

gopherbot pushed a commit that referenced this issue Jan 6, 2022
Pull in approved backports to golang.org/x/net/http2:

    aa5a62b http2: prioritize RST_STREAM frames in random write scheduler

By doing:

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

Fixes #50449

Change-Id: I4a6a8ae943d2d1705209e648a63421914062d3e4
Reviewed-on: https://go-review.googlesource.com/c/go/+/375815
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
Run-TryBot: Carlos Amedee <carlos@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>
Trust: Carlos Amedee <carlos@golang.org>
@dmitshur dmitshur added CherryPickApproved Used during the release process for point releases and removed CherryPickCandidate Used during the release process for point releases labels Jan 6, 2022
danbudris pushed a commit to danbudris/net that referenced this issue Sep 16, 2022
…n random write scheduler

The http2 random write scheduler should not queue RST_STREAM
frames with the DATA frames, and instead treat them as control frames.

There can be deadlock situations if data frames block the queue,
because if the sender wants to close the stream it sends an RST frame,
but if the client is not draining the queue, the RST frame is stuck
and the sender is not able to finish.

For golang/go#49741
Updates golang/go#50449

Change-Id: I0940a76d1aad95f1c4d3856e4d79cf5ce2a78ff2
Reviewed-on: https://go-review.googlesource.com/c/net/+/367154
Trust: Dave Cheney <dave@cheney.net>
Reviewed-by: Damien Neil <dneil@google.com>
Trust: Damien Neil <dneil@google.com>
Run-TryBot: Damien Neil <dneil@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
(cherry picked from commit 04296fa)
Reviewed-on: https://go-review.googlesource.com/c/net/+/375718
Run-TryBot: Carlos Amedee <carlos@golang.org>
Trust: Dmitri Shuralyov <dmitshur@golang.org>
danbudris pushed a commit to danbudris/net that referenced this issue Sep 16, 2022
…n random write scheduler

The http2 random write scheduler should not queue RST_STREAM
frames with the DATA frames, and instead treat them as control frames.

There can be deadlock situations if data frames block the queue,
because if the sender wants to close the stream it sends an RST frame,
but if the client is not draining the queue, the RST frame is stuck
and the sender is not able to finish.

For golang/go#49741
Updates golang/go#50449

Change-Id: I0940a76d1aad95f1c4d3856e4d79cf5ce2a78ff2
Reviewed-on: https://go-review.googlesource.com/c/net/+/367154
Trust: Dave Cheney <dave@cheney.net>
Reviewed-by: Damien Neil <dneil@google.com>
Trust: Damien Neil <dneil@google.com>
Run-TryBot: Damien Neil <dneil@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
(cherry picked from commit 04296fa)
Reviewed-on: https://go-review.googlesource.com/c/net/+/375718
Run-TryBot: Carlos Amedee <carlos@golang.org>
Trust: Dmitri Shuralyov <dmitshur@golang.org>
danbudris pushed a commit to danbudris/go that referenced this issue Sep 21, 2022
Pull in approved backports to golang.org/x/net/http2:

    aa5a62b http2: prioritize RST_STREAM frames in random write scheduler

By doing:

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

Fixes golang#50449

Change-Id: I4a6a8ae943d2d1705209e648a63421914062d3e4
Reviewed-on: https://go-review.googlesource.com/c/go/+/375815
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
Run-TryBot: Carlos Amedee <carlos@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>
Trust: Carlos Amedee <carlos@golang.org>
rcrozean pushed a commit to rcrozean/go that referenced this issue Oct 5, 2022
# AWS EKS
Backported To: go-1.15.15-eks
Backported On: Thu, 22 Sept 2022
Backported By: budris@amazon.com
Backported From: release-branch.go1.16
EKS Patch Source Commit: danbudris@f4338f7
Upstream Source Commit: golang@0551247

# Original Information

Pull in approved backports to golang.org/x/net/http2:

    aa5a62b http2: prioritize RST_STREAM frames in random write scheduler

By doing:

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

Fixes golang#50449

Change-Id: I4a6a8ae943d2d1705209e648a63421914062d3e4
Reviewed-on: https://go-review.googlesource.com/c/go/+/375815
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
Run-TryBot: Carlos Amedee <carlos@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>
Trust: Carlos Amedee <carlos@golang.org>
rcrozean pushed a commit to rcrozean/go that referenced this issue Oct 12, 2022
# AWS EKS
Backported To: go-1.15.15-eks
Backported On: Thu, 22 Sept 2022
Backported By: budris@amazon.com
Backported From: release-branch.go1.16
EKS Patch Source Commit: danbudris@f4338f7
Upstream Source Commit: golang@0551247

# Original Information

Pull in approved backports to golang.org/x/net/http2:

    aa5a62b http2: prioritize RST_STREAM frames in random write scheduler

By doing:

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

Fixes golang#50449

Change-Id: I4a6a8ae943d2d1705209e648a63421914062d3e4
Reviewed-on: https://go-review.googlesource.com/c/go/+/375815
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
Run-TryBot: Carlos Amedee <carlos@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>
Trust: Carlos Amedee <carlos@golang.org>
@golang golang locked and limited conversation to collaborators Jan 6, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
CherryPickApproved Used during the release process for point releases FrozenDueToAge
Projects
None yet
Development

No branches or pull requests

3 participants