I would greatly appreciate anyone who has an idea of what is happening here. I've also made an issue on the library's Github: https://github.com/aws/s2n-quic/issues/1632
Problem:
Our team switched QUIC libraries for one of our nascent projects to using s2n-quic
(which is managed by an AWS team) from quinn
in a recent rewrite. The two libraries are very similar from what I can tell. We have integration tests that build a dummy server and client. The client successfully writes to the server via a split BidirectionalStream, the server successfully receives and processes the request and writes back successfully (via a split BidirectionalStream), and the client successfully receives the correct response. But after writing back, the server hangs for 30 seconds before it handles an IdleTimerExpired error that occurs during a write operation. I have not been able to replicate this error.
I get this error whenever I call SendStream::poll_flush
. It hangs for 30 seconds, then is polled a second time and immediately returns this error.
I would include code, but I haven't been able to replicate this in a simpler way. I am using s2n-quic
version 1.16.0 both in our project and in the replication. I can include the tracing logs if that would be helpful.