Closed stevenh closed 1 year ago
Is this with 0.9 or 0.10 (released yesterday)? If 0.9, can you try with 0.10 (it might well still have the same issue)? If this is a 0.10 regression, that would be useful information too.
It was with 0.9, trying with 0.10.1 now, will report back.
Closing as invalid, there was internal issue bocking reads.
Happy to hear that!
There seems to be some sort of race in handling Connection::close with RecvStream::read.
We have a client which when told to quit closes the underlying connection of a RecvStream SendStream pair which are handled by separate thread. While the sending thread always correctly returns an error from write calls the read often hangs waiting for the return of the read which seems to block, triggering our shutdown timeout which is currently 5 seconds.
Good trace:
Hang trace:
The key difference is the last two lines which don't appear the successful case.
I suspect what's happening underneath is the server is processing the
CONNECTION_CLOSE
and shutting down its writer resulting in theread
never returning. In the success case I suspect the app is processing the data from aread
so not actually in the call to block.As documented by Connection::close it should unblock all operations and return immediately from the RecvStream::read