Converge to unified gRPC mux
- Dominant language
- C++
- Stars
- 28.9k
- Forks
- 5.6k
- Avg merge
- 1d 22h
- Merged PRs (30d)
- 430
Description
*Converge to unified gRPC mux*
*Description*:
Envoy's support for the [State-of-the-World](https://github.com/envoyproxy/envoy/blob/c0cea65b699939a0d0c048242f283dbff2c6058a/source/extensions/config_subscription/grpc/grpc_mux_impl.h#L37) and [Delta-xDS](https://github.com/envoyproxy/envoy/blob/c0cea65b699939a0d0c048242f283dbff2c6058a/source/extensions/config_subscription/grpc/new_grpc_mux_impl.h#L29) gRPC muxes started as 2 different implementations.
There's been an effort (#17352) to converge the 2 code-bases into a single one - [unified gRPC mux](https://github.com/envoyproxy/envoy/blob/c0cea65b699939a0d0c048242f283dbff2c6058a/source/extensions/config_subscription/grpc/xds_mux/grpc_mux_impl.h#L57) - that is currently under a runtime guard [envoy_reloadable_features_unified_mux](https://github.com/envoyproxy/envoy/blob/c0cea65b699939a0d0c048242f283dbff2c6058a/source/common/runtime/runtime_features.cc#L100C21-L100C58) and defaults to false. Before converting the runtime flag to true, Envoy needs to ensure that doing so won't result in a breaking behavior.
Known differences will be tracked in this issue:
1. A request for a child resource will always be sent after receiving the parent resource in the non-unified SotW implementation.
Example: Say a cluster configured to [use EDS](https://github.com/envoyproxy/envoy/blob/1f67c88f26744e1f7c21c0e65798d77d69efeac8/api/envoy/config/cluster/v3/cluster.proto#L203) is received using CDS. In the non-unified SotW implementation, Envoy will always send an EDS request for that resource, even when receiving an update to a known cluster. In the (nun-unified) delta-xDS implementation, and in the unified gRPC implementations (SotW and delta-xDS), Envoy will only send a request on the first request for the EDS resource.
A server may erroneously depend on receiving that request in order to send an update to the Envoy.
AIs:
- Ensure that Envoy behaves as expected without receiving the response for a known resource. Known issue with EDS (#13009, addressed in #26749), and need to validate that other xDS subscriptions work properly.
- Ensure that all gRPC-based tests run with the unified and non-unified mux implementation.
Contributor guide
Assessment
This issue has not been assessed yet.