Description
Feature Request
Motivation
In order to properly support DNS-based client side gRPC load balancing, the server must periodically terminate the client connection gracefully by sending a GOWAY
frame and subsequently closing the connection.
MAX_CONNECTION_AGE
and MAX_CONNECTION_AGE_GRACE
are defined in the gRPC Server-side connection management.
Unfortunately, due the inconsistent support of client connection timeout settings in gRPC client libraries, the current recommendation appears to be to use service side.
These issues provide more context:
- It is impossible to set a custom polling frequency in DNS resolver grpc/grpc-go#1663 (comment)
- Need more intelligent re-resolution of names grpc/grpc#12295
Proposal
Introduce max_connection_age
and max_connection_age_grace
server timeouts. On first look, it appears support would need to be added to hyper
first.
Alternatives
The alternative is client side timeouts. Unfortunately, client side timeouts are not implemented consistently. See grpc/grpc-go#1663.
I am not aware of any alternatives other than service meshes, proxies, xDS, or a custom gRPC resolver or load balancing mechanism (all of which can be quite complex).