runtime: HTTP2: Hang when sending multiple requests from a HttpClient

I’m not sure what the cause of this hang is, it appears to happen at HttpClient.SendAsync when the client has made at least one previous call.

Repro:

  1. git clone https://github.com/JamesNK/grpc-dotnet.git
  2. git checkout jamesnk/hang-multiple-calls
  3. dotnet test test\FunctionalTests --filter Name~DuplexStream_SendToUnimplementedMethodAfterResponseReceived_Hang

Logic in the test is like:

  1. Client makes HTTP/2 duplex call to the server
  2. Server immediately returns 200 and ends request.
  3. Client inspects headers.
  4. Client completes request stream.
  5. Go to 1.

It consistently hangs making the second or third call.

.NET Core SDK (reflecting any global.json):
 Version:   3.0.100-preview8-013248
 Commit:    135af55c46

About this issue

  • Original URL
  • State: closed
  • Created 5 years ago
  • Comments: 29 (29 by maintainers)

Most upvoted comments

Perhaps we should have an issue specifically for the second HttpClient issue (re RST_STREAM with NO_ERROR). That makes for a better historical record here of what was actually fixed.

@karelz I’m waiting for approval from @stephentoub; if you want me to merge without that I can do so.

The release/3.0 branch is locked until at least Monday/Tuesday next week. So, if you need @stephentoub to review changes on that PR then that’s fine.