-
Notifications
You must be signed in to change notification settings - Fork 18k
x/net/http2: cancelling a request from the Client doesn't release its stream #21543
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
Note to self, related to #22413: It is confusing to me that transport.go has both Then, we need to be more careful about when a stream is removed from |
Change https://golang.org/cl/80137 mentions this issue: |
AFAICT, activeRes serves no real purpose. It is used in just two ways: - To reduce the number of calls to closeIfIdle, which reduces the number of acquires of cc.mu when there are many concurrent streams. I dug through the CL history and could not find any benchmarks showing that this is necessary. - To avoid redundant calls to cs.bufPipe.CloseWithError(err) when a read loop is shutdown. This is unnecessary, since redundant CloseWithError calls are ignored. Since there isn't a good reason to have activeRes, the simplest way to fix the leak is to remove activeRes entirely. Updates golang/go#21543 Change-Id: I1d1d2dc6c946425a2772c8bf71436707021ac269 Reviewed-on: https://go-review.googlesource.com/80137 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
Change https://golang.org/cl/81276 mentions this issue: |
AFAICT, activeRes serves no real purpose. It is used in just two ways: - To reduce the number of calls to closeIfIdle, which reduces the number of acquires of cc.mu when there are many concurrent streams. I dug through the CL history and could not find any benchmarks showing that this is necessary. - To avoid redundant calls to cs.bufPipe.CloseWithError(err) when a read loop is shutdown. This is unnecessary, since redundant CloseWithError calls are ignored. Since there isn't a good reason to have activeRes, the simplest way to fix the leak is to remove activeRes entirely. Updates golang/go#21543 Change-Id: I1d1d2dc6c946425a2772c8bf71436707021ac269 Reviewed-on: https://go-review.googlesource.com/80137 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
This is the second half of issue #21229 closed with change https://golang.org/cl/53250. The leak isn't fixed because the stream is still referenced by
rl.activeRes
.What did you do?
req->Context().Done()
System details
@tombergan
The text was updated successfully, but these errors were encountered: