-
Notifications
You must be signed in to change notification settings - Fork 18k
net/http: transport caches permanently broken persistent connections if write error happens during h2 handshake [1.15 backport] #45076
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
Comments
it would be good to get this fixed in 1.15 since it can't easily be worked around by callers |
cc @fraenkel |
I cannot do most of what needs to be done here. The ordering matters. |
Michael, is that due to time constraints? If so, maybe Emmanuel can help? @odeke-em |
I actually no longer understand how net/http2 is being bundled into go 1.15. |
@fraenkel For Go 1.15 backports, the bundled and go.mod versions are distinct, so need to use net’s release-branch.go1.15-bundle for bundle updates, otherwise release-branch.go1.15 for vendor and go.mod. See command sequence in ef3039e for an example. (The vendored and bundled versions are in sync in Go 1.16 and newer with a test to catch any deviations.) |
This is going to take some time. The moment I add the fixes for go1.15, the infamous |
@dmitshur Those steps don't quite work for me. |
@fraenkel Yes, those instructions are the final version meant to be used after the backport CL to the x/net bundle branch is submitted, but a local replace is needed for local testing/development until then.
There's a chance this is related to issue #44079.
I don't know what 5 other fixes you're referring to, can you please clarify? I would expect you should be able to rebase/cherry-pick what is needed on top of the relevant branches in their current state, nothing else should be "in front". |
@dmitshur When I cherry-pick the fix on the go1.15-bundle branch:
|
@fraenkel The upstream branch may be misconfigured. What does |
@dmitshur That was it. Thanks. It seems https://go-review.googlesource.com/c/net/+/249937/ has not been merged, so I won't include the test. |
Change https://golang.org/cl/304309 mentions this issue: |
Change https://golang.org/cl/304210 mentions this issue: |
Approving per discussion in a release meeting. Only Go 1.15 needs this backport. |
The http transport added a new interface to detect RoundTrippers that always error. Prior to this, the erringRoundTripper would not be identified as such and a new connection was always created. Updates golang/go#45076 Change-Id: Icc315dcc9ce8ea0db94a1f2c58c6a741675d8962 Reviewed-on: https://go-review.googlesource.com/c/net/+/243257 Reviewed-by: Chris Friesen <[email protected]> Reviewed-by: Emmanuel Odeke <[email protected]> Run-TryBot: Emmanuel Odeke <[email protected]> TryBot-Result: Gobot Gobot <[email protected]> Reviewed-on: https://go-review.googlesource.com/c/net/+/304309 Trust: Dmitri Shuralyov <[email protected]> Run-TryBot: Dmitri Shuralyov <[email protected]> Reviewed-by: Emmanuel Odeke <[email protected]>
Change https://golang.org/cl/305489 mentions this issue: |
This comment has been minimized.
This comment has been minimized.
Closed by merging be87281 to release-branch.go1.15. |
Bring in the change in CL 304309 with: go mod edit -replace=golang.org/x/net=golang.org/x/[email protected] GOFLAGS='-mod=mod' go generate -run=bundle std go mod edit -dropreplace=golang.org/x/net go get -d golang.org/x/[email protected] go mod tidy go mod vendor For #45076. Updates #40213. Change-Id: I68d5e1f2394508c9cf8627fb852dd9e906d45016 Reviewed-on: https://go-review.googlesource.com/c/go/+/305489 Trust: Dmitri Shuralyov <[email protected]> Trust: Emmanuel Odeke <[email protected]> Run-TryBot: Dmitri Shuralyov <[email protected]> Reviewed-by: Emmanuel Odeke <[email protected]> TryBot-Result: Go Bot <[email protected]>
… always error CL 220905 added code to identify alternate transports that always error by using http2erringRoundTripper. This does not work when the transport is from another package, e.g., http2.erringRoundTripper. Expose a new method that allow detection of such a RoundTripper. Switch to an interface that is both a RoundTripper and can return the underlying error. Fixes #45076. Updates #40213. Change-Id: I170739857ab9e99dffb5fa55c99b24b23c2f9c54 Reviewed-on: https://go-review.googlesource.com/c/go/+/243258 Reviewed-by: Emmanuel Odeke <[email protected]> Run-TryBot: Emmanuel Odeke <[email protected]> TryBot-Result: Gobot Gobot <[email protected]> Reviewed-on: https://go-review.googlesource.com/c/go/+/304210 Trust: Dmitri Shuralyov <[email protected]> Trust: Emmanuel Odeke <[email protected]> Run-TryBot: Dmitri Shuralyov <[email protected]> TryBot-Result: Go Bot <[email protected]> Reviewed-by: Emmanuel Odeke <[email protected]>
Pick up fixes to the following Go bugs: * golang/go#45076 * golang/go#45187 * golang/go#42884 * [ ] Adjust the Pebble tests to run in new version. * [x] Adjust version in Docker image ([source](./builder/Dockerfile)). * [x] Rebuild and push the Docker image (following [Basic Process](#basic-process)) * [x] Bump the version in `WORKSPACE` under `go_register_toolchains`. You may need to bump [rules_go](https://github.com/bazelbuild/rules_go/releases). * [x] Bump the version in `builder.sh` accordingly ([source](./builder.sh#L6)). * [ ] Bump the version in `go-version-check.sh` ([source](./go-version-check.sh)), unless bumping to a new patch release. * [ ] Bump the go version in `go.mod`. You may also need to rerun `make vendor_rebuild` if vendoring has changed. * [x] Bump the default installed version of Go in `bootstrap-debian.sh` ([source](./bootstrap/bootstrap-debian.sh#L40-42)). * [x] Replace other mentions of the older version of go (grep for `golang:<old_version>` and `go<old_version>`). * [ ] Update the `builder.dockerImage` parameter in the TeamCity [`Cockroach`](https://teamcity.cockroachdb.com/admin/editProject.html?projectId=Cockroach&tab=projectParams) and [`Internal`](https://teamcity.cockroachdb.com/admin/editProject.html?projectId=Internal&tab=projectParams) projects. * [x] Adjust `GO_VERSION` in the TeamCity agent image ([setup script](./packer/teamcity-agent.sh)) and ask the Developer Infrastructure team to deploy new images. Resolves cockroachdb#63836. Release note (general change): Upgrade the CRDB binary to Go 1.15.10
63785: sql: use catalog.Mutation, catalog.Column and catalog.Index where possible r=postamar a=postamar sql: use catalog.Mutation where possible This commit is a refactor which introduces catalog.Mutation wherever possible, in an effort to avoid using the descpb.DescriptorMutation type directly. Release note: None sql: use catalog.Column and catalog.Index where possible This commit is a refactor which introduces the catalog.Column and catalog.Index interfaces wherever possible. These had recently been added in an effort to avoid using the descpb.ColumnDescriptor and descpb.IndexDescriptor types directly. This commit generalizes their usage throughout the sql packages. Fixes #63755. Release note: None 63787: roachtest: added hibernate ignorelist for 21.1 r=rafiss a=mnovelodou Previously, some random issues with hibernate were afecting roachtest This was inadequate because they are false failures To address this, this patch set these tests in ignore list Release note: none 63839: cli: bump the cobra dependency and add autocompletion for fish r=stevendanna a=knz Fixes #63838 . Fixes #50187. This updates the cobra dep which hadn't been updated since 2017. Also picks up the new support for fish autocompletions. Release note (cli change): Certain errors caused by invalid command-line arguments are now printed on the process' standard error stream, instead of standard output. Release note (cli change): The `cockroach gen autocomplete` command has been updated and can now produce autocompletion definitions for the `fish` shell. 63853: build: upgrade go to 1.15.11 r=rail a=rickystewart Pick up fixes to the following Go bugs: * golang/go#45076 * golang/go#45187 * golang/go#42884 * [ ] Adjust the Pebble tests to run in new version. * [x] Adjust version in Docker image ([source](./builder/Dockerfile)). * [x] Rebuild and push the Docker image (following [Basic Process](#basic-process)) * [x] Bump the version in `WORKSPACE` under `go_register_toolchains`. You may need to bump [rules_go](https://github.com/bazelbuild/rules_go/releases). * [x] Bump the version in `builder.sh` accordingly ([source](./builder.sh#L6)). * [ ] Bump the version in `go-version-check.sh` ([source](./go-version-check.sh)), unless bumping to a new patch release. * [ ] Bump the go version in `go.mod`. You may also need to rerun `make vendor_rebuild` if vendoring has changed. * [x] Bump the default installed version of Go in `bootstrap-debian.sh` ([source](./bootstrap/bootstrap-debian.sh#L40-42)). * [x] Replace other mentions of the older version of go (grep for `golang:<old_version>` and `go<old_version>`). * [ ] Update the `builder.dockerImage` parameter in the TeamCity [`Cockroach`](https://teamcity.cockroachdb.com/admin/editProject.html?projectId=Cockroach&tab=projectParams) and [`Internal`](https://teamcity.cockroachdb.com/admin/editProject.html?projectId=Internal&tab=projectParams) projects. * [x] Adjust `GO_VERSION` in the TeamCity agent image ([setup script](./packer/teamcity-agent.sh)) and ask the Developer Infrastructure team to deploy new images. Resolves #63836. Release note (general change): Upgrade the CRDB binary to Go 1.15.10 63857: changefeedccl: Make `kafka_sink_config` a valid option. r=stevendanna a=miretskiy Add `kafka_sink_config` to the list of allowed changefeed options. Release Notes: None Co-authored-by: Marius Posta <[email protected]> Co-authored-by: MiguelNovelo <[email protected]> Co-authored-by: Raphael 'kena' Poss <[email protected]> Co-authored-by: Ricky Stewart <[email protected]> Co-authored-by: Yevgeniy Miretskiy <[email protected]>
Pick up fixes to the following Go bugs: * golang/go#45076 * golang/go#45187 * golang/go#42884 * [ ] Adjust the Pebble tests to run in new version. * [x] Adjust version in Docker image ([source](./builder/Dockerfile)). * [x] Rebuild and push the Docker image (following [Basic Process](#basic-process)) * [x] Bump the version in `WORKSPACE` under `go_register_toolchains`. You may need to bump [rules_go](https://github.com/bazelbuild/rules_go/releases). * [x] Bump the version in `builder.sh` accordingly ([source](./builder.sh#L6)). * [ ] Bump the version in `go-version-check.sh` ([source](./go-version-check.sh)), unless bumping to a new patch release. * [ ] Bump the go version in `go.mod`. You may also need to rerun `make vendor_rebuild` if vendoring has changed. * [x] Bump the default installed version of Go in `bootstrap-debian.sh` ([source](./bootstrap/bootstrap-debian.sh#L40-42)). * [x] Replace other mentions of the older version of go (grep for `golang:<old_version>` and `go<old_version>`). * [ ] Update the `builder.dockerImage` parameter in the TeamCity [`Cockroach`](https://teamcity.cockroachdb.com/admin/editProject.html?projectId=Cockroach&tab=projectParams) and [`Internal`](https://teamcity.cockroachdb.com/admin/editProject.html?projectId=Internal&tab=projectParams) projects. * [x] Adjust `GO_VERSION` in the TeamCity agent image ([setup script](./packer/teamcity-agent.sh)) and ask the Developer Infrastructure team to deploy new images. Resolves cockroachdb#63836. Release note (general change): Upgrade the CRDB binary to Go 1.15.10
Technically, the minimum required is 1.15.3: https://github.com/cockroachdb/cockroach/blob/release-21.1/build/go-version-check.sh#L10 However, 1.15.11 avoids these Go bugs: golang/go#45076 golang/go#45187 golang/go#42884 So to prevent users from running into those, we listing 1.15.11 as the minimum required version, followed by a note that you can use IGNORE_GOVERS=1 to try building with older versions. Fixes #10468 Fixes #9081
@networkimprov requested issue #40213 to be considered for backport to the next 1.15 minor release.
The text was updated successfully, but these errors were encountered: