You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- I am using dart both for server and client.
- I am awaiting repeated GRPC requests with a timeout of 200ms in a for loop
- I am creating a new request after a response, a timeout or an error is provided by GRPC
After receiving a timeout (GRPC code 4, codeName DEADLINE_EXCEEDED)
The next request almost always errors with
Expected result: Some good responses, some timeouts, but no consistent HTTP/2 protocol errors after a timeout
Actual result: Every timeout
GRPC code 4, codeName DEADLINE_EXCEEDED
is followed by an HTTP/2 error
HTTP/2 error: Connection error: Connection is being forcefully terminated. (errorCode: 1)
Details
I suspect the dart GRPC libraries need to verify that on the event of a timeout, the HTTP/2 protocol is still being followed so no PROTOCOL_ERROR is produced on subsequent calls.
Otherwise, if this is desired behaviour, it should be documented at CallOptions class in package:grpc/src/client/call.dart
Any input is appreciated regarding this.
The text was updated successfully, but these errors were encountered:
Can you confirm your results using my repo? You may need to lower your timeout depending on your wifi.
Example output after pressing the button a few times.
Ok, let's check under which platforms this is an issue.
I used a Huawei with EMUI-Version 12.0.0 (client) and a Pixel 3 with Android 12 (server) -> Shows the issue.
After receiving a timeout (GRPC code 4, codeName DEADLINE_EXCEEDED)
The next request almost always errors with
HTTP/2 errorCode 1 is PROTOCOL_ERROR according to https://www.iana.org/assignments/http2-parameters/http2-parameters.xhtml#error-code
<version of the grpc-dart packages used; see your
pubspec.lock
file>grpc version: both "3.2.3" and "3.2.4" tested, both present the issue.
Tested with two Android phones connected to the same wifi.
Repro steps
Create a server, run it and run this code in the client:
Expected result: Some good responses, some timeouts, but no consistent HTTP/2 protocol errors after a timeout
Actual result: Every timeout
is followed by an HTTP/2 error
Details
I suspect the dart GRPC libraries need to verify that on the event of a timeout, the HTTP/2 protocol is still being followed so no PROTOCOL_ERROR is produced on subsequent calls.
Otherwise, if this is desired behaviour, it should be documented at CallOptions class in package:grpc/src/client/call.dart
Any input is appreciated regarding this.
The text was updated successfully, but these errors were encountered: