Timeout test may cancel before server sends DEADLINE_EXCEEDED
drice-buf opened this issue · comments
The test cases:
- Timeouts/HTTPVersion:2/Protocol:PROTOCOL_GRPC/Codec:CODEC_PROTO/Compression:COMPRESSION_GZIP/TLS:false/bidi-stream/full-duplex
- Timeouts/HTTPVersion:2/Protocol:PROTOCOL_GRPC/Codec:CODEC_PROTO/Compression:COMPRESSION_IDENTITY/TLS:false/bidi-stream/full-duplex
are currently failing against my gRPC-Java server implementation) as follows:
FAILED: Timeouts/HTTPVersion:2/Protocol:PROTOCOL_GRPC/Codec:CODEC_PROTO/Compression:COMPRESSION_IDENTITY/TLS:false/bidi-stream/full-duplex:
actual error code 1 (canceled) does not match expected code 4 (deadline_exceeded)
---- HTTP Trace ----
request> 0.000ms POST http://:52863/connectrpc.conformance.v1.ConformanceService/BidiStream HTTP/1.1
request> Accept-Encoding: identity
request> Content-Type: application/grpc
request> Grpc-Timeout: 199990u
request> Te: trailers
request> User-Agent: grpc-go-connect/1.15.0 (go1.22.0) connectconformance-referenceclient/v1.0.0-rc3
request> X-Test-Case-Name: Timeouts/HTTPVersion:2/Protocol:PROTOCOL_GRPC/Codec:CODEC_PROTO/Compression:COMPRESSION_IDENTITY/TLS:false/bidi-stream/full-duplex
request>
request> 0.401ms message #1: prefix: flags=0, len=37
request> message #1: data: 37/37 bytes
response< 4.125ms 200 OK
response< Content-Type: application/grpc
response< Grpc-Accept-Encoding: gzip
response< Grpc-Encoding: identity
response<
request> 199.301ms canceled
It appears that the client cancels at 200ms while the server is still sleeping for 1500ms.
I've found the issue here in the connect-go runtime, which is what powers the reference client: connectrpc/connect-go#709