-
Notifications
You must be signed in to change notification settings - Fork 4.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[xds] Relax the CHECK on factories for typed per-filter config #15770
Comments
cc @htuch |
the check we want to remove: https://github.com/envoyproxy/envoy/blob/main/source/common/router/config_impl.cc#L1532-L1533 |
I think it would be reasonable for this to be configurable, much like we do for other validation options. cc @dmitri-d |
To clarify: is the idea to accept a "partial" route config update by ignoring per_filter_configs whose factories cannot be found? |
CC @markdroth who introduced this. I agree it would be useful to make this configurable, probably fine to do it at bootstrap level. |
some clarification: we want to break the management server and Envoy version coupling. I think we can add a switch for such factories: if mandatory, let's throw, if "optional", feel safe to ignore. |
I think this would be best addressed by fixing #15025. That way, the control plane can explicitly indicate which filters should be optional and which are required. Note that gRPC has already implemented support for the new |
Also, I don't think I introduced Envoy's current behavior -- I think it has always done this. |
emm....I missed this comments, looks like I fixed it as a wrong way. |
Close my PR. The optional filter is preferred fixed. @markdroth let me know if you need any volunteers to help on #15025. |
As far as I know, no one is working on that issue, so you should feel free to send a PR for that. We may want to just close this bug as a dup of #15025. |
Enable `is_optional` field for `HttpFilter`. The default value is `false`, it will keep the same behavior with the current implementation. The envoy will reject the unsupported HTTP filter, also will reject the unsupported HTTP filter in typed per filter config. When the value is `true`, the unsupported HTTP filter will be ignored by the envoy, also will be ignored by typed per filter config, with a warning log. Risk Level: low Testing: unit tests and integration tests are added Docs Changes: API doc is added Release Notes: added as new feature Fixes #15770 Fixes #15025 Signed-off-by: He Jie Xu <hejie.xu@intel.com>
Enable `is_optional` field for `HttpFilter`. The default value is `false`, it will keep the same behavior with the current implementation. The envoy will reject the unsupported HTTP filter, also will reject the unsupported HTTP filter in typed per filter config. When the value is `true`, the unsupported HTTP filter will be ignored by the envoy, also will be ignored by typed per filter config, with a warning log. Risk Level: low Testing: unit tests and integration tests are added Docs Changes: API doc is added Release Notes: added as new feature Fixes envoyproxy#15770 Fixes envoyproxy#15025 Signed-off-by: He Jie Xu <hejie.xu@intel.com>
Title: Do not reject the typed per-filter-config if a factory can't be found, remove binaries version coupling.
Description:
Right now for the typedConfig in route we demand the factory class to be linked in at Envoy, otherwise it rejects the whole DiscoveryResponse.
This adds coupling between management server and Envoy, which introduces complexity to rollout/backs of these binaries.
Let's be more tolerant to such config change. (with a runtime feature flag guard), similar to Protobuf upgrade.
Instead of throwing an exception, let's do logging and adding stats for such missing factories.
The text was updated successfully, but these errors were encountered: