envoyproxy/envoy
Auf GitHub ansehenxDS NACK loop between when switching from gRPC RDS to file-based RDS
Open
#10.046 geöffnet am 13. Feb. 2020
area/xdshelp wantedinvestigate
Repository-Metriken
- Stars
- (27.997 Stars)
- PR-Merge-Metriken
- (Durchschn. Merge 8T) (378 gemergte PRs in 30 T)
Beschreibung
Title: NACK loop when switching from gRPC RDS to file-based RDS
Context: we use java-control-plane, and non-incremental ADS.
Note: I'm not sure if this is a bug in Envoy, java-control-plane, or perhaps working as intended and we need to work around it in our custom control plane wrapping java-control-plane.
Description:
When transitioning the config source in RDS config from gRPC based to file path based, Envoy started endless logging lines like the following.
2020-02-12_22:59:02.92713 [2020-02-12 22:59:02.927][212341][warning][config] [external/envoy/source/common/config/grpc_mux_impl.cc:153] Ignoring unwatched type URL type.googleapis.com/envoy.api.v2.RouteConfiguration
2020-02-12_22:59:02.94401 [2020-02-12 22:59:02.943][212341][warning][config] [external/envoy/source/common/config/grpc_mux_impl.cc:153] Ignoring unwatched type URL type.googleapis.com/envoy.api.v2.RouteConfiguration
2020-02-12_22:59:02.96188 [2020-02-12 22:59:02.961][212341][warning][config] [external/envoy/source/common/config/grpc_mux_impl.cc:153] Ignoring unwatched type URL type.googleapis.com/envoy.api.v2.RouteConfiguration
I believe what happened is this:
- Envoy was operating using gRPC RDS
- Our custom integration with java-control-plane saved a new configuration snapshot into the java-control-plane Cache. The snapshot included LDS config pointing the HCM to an RDS file. It also included routes which was not necessary but for simplicity we always generate them.
- java-control-plane responds with new Listener, Envoys switches to file-based RDS. (I'm unclear on what happens to the open RDS watches at this point).
- java-control-plane responds with routes
- Envoy hits this code, seemingly queuing another RDS request with an old version (NACK)
- java-control-plane responds again
- repeat 4-6
This loop did not stop until Envoy was restarted which breaks the ADS streams.