Ambassador: Ambassador does not work well for gRPC streaming

Created on 17 Jan 2020  路  3Comments  路  Source: datawire/ambassador

Describe the bug
gRPC streams are somewhat different from traditional unary API calls. Often there may be long idle periods. gRPC and Envoy have sophisticated logic for managing gRPC timeout without conflicting with the timeouts for "normal" unary requests (gRPC or not). Specifically, I am talking about the "grpc-timeout" client header, "max_grpc_timeout" route property (if not set, the header mentioned before is not taken into account) and "grpc_timeout_offset" route property. Ambassador only offers "timeout_ms" which is translated into Envoy's "timeout" route property. This means that no special handling for gRPC streams is possible.

As result, the only way to support the streams correctly is to disable the timeout, which may not be a good idea in general. Plus, this simply does not provide enough flexibility.

To Reproduce
Steps to reproduce the behavior:

  1. Start gRPC stream
  2. Let it idle for more than 3s
  3. The stream will be closed by Ambassador

Expected behavior
If Ambassador provided more configuration properties, it could be supported in much more elegant way.

Versions (please complete the following information):

  • Ambassador: [master]
stale

Most helpful comment

can it be reopened?

All 3 comments

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

can it be reopened?

i am seing gRPC Error (14, upstream connect error or disconnect/reset before headers. reset reason: connection failure) for dart clients while go clients just work fine

Was this page helpful?
0 / 5 - 0 ratings

Related issues

psychonetic picture psychonetic  路  6Comments

josephglanville picture josephglanville  路  3Comments

ppeble picture ppeble  路  3Comments

buehler picture buehler  路  6Comments

gregbacchus picture gregbacchus  路  3Comments