-
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
release: flipping deprecated features to be fatal-by-default #7549
Conversation
Signed-off-by: Alyssa Wilk <alyssar@chromium.org>
@htuch for API stuff and layered runtime This PR should land with an envoy-announce email so please don't merge it unless you want to send that email :-) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for staying on top of this. Few small comments.
/wait
"envoy.deprecated_features.bootstrap.proto:runtime", | ||
"envoy.deprecated_features.redis_proxy.proto:catch_all_cluster", | ||
"envoy.deprecated_features.lds.proto:use_original_dst", | ||
"envoy.deprecated_features.server_info.proto:max_stats", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this and below are on output protos so they won't have any effect. Not sure how we could know this. Thoughts?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good point. No ideas here - I'd be inclined to leave them in to avoid script churn.
Maybe have file or proto naming in v3 to make things more clear going forward?
@htuch
symlink_root: "/srv/runtime_data/current" | ||
subdirectory: envoy | ||
override_subdirectory: envoy_override | ||
layered_runtime: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The equivalent of what we had before would be:
layered_runtime:
layers:
- name: root
disk_layer:
symlink_root: /srv/configset/envoydata/current
subdirectory: envoy
- name: override
disk_layer:
symlink_root: /srv/configset/envoydata/current
subdirectory: envoy_override
append_service_cluster: true
- name: admin
admin_layer: {}
Should we keep it equivalent?
subdirectory: envoy | ||
override_subdirectory: envoy_override | ||
layered_runtime: | ||
layers: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
see above comment, also indent?
subdirectory: envoy | ||
override_subdirectory: envoy_override | ||
layered_runtime: | ||
layers: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
indent?
"envoy.deprecated_features.lds.proto:use_original_dst", | ||
"envoy.deprecated_features.server_info.proto:max_stats", | ||
"envoy.deprecated_features.redis_proxy.proto:cluster", | ||
"envoy.deprecated_features.server_info.proto:max_obj_name_len", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think we need
envoy/source/common/config/utility.cc
Line 302 in b3f848d
"envoy.deprecated_features.v1_filter_json_config")) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh man, I totally missed this in review but this should have been envoy.reloadable_features.v1_filter_json_config which is why it wasn't caught.
I tried flipping it, and it broke the bootstrap test pretty hard. Beyond needing the same runtime layers update, there's some issue with proto constraint which I've tracked down to a really confusing red herring where when we to do proto to json conversion we end up failing and so having a completely empty proto, so failing the first validator which checks for non-empty bytes
Given this didn't land as a config change what do we think of renaming, and flipping in its own PR, ideally after some digging into the hot restart test?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sure whatever you think is best. I mainly want to get this deprecation moving since this will allow us to delete a ton of code (all of v1).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Would you have cycles to look into what's going on with the filter config? I was going to ask we assign whoever introduced the variable to sorting out the test and looks like it was you :-P
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, sorry, what do you want me to do exactly? If you give me a diff that is broken I can debug it. :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think we land this as-is, and you flip the v1 json separately, since it currently doesn't pass tests?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
OK got it, but you want me to change the name also?
Signed-off-by: Alyssa Wilk <alyssar@chromium.org>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM!
@@ -47,6 +47,12 @@ constexpr const char* disallowed_features[] = { | |||
// Acts as both a test entry for deprecated.proto and a marker for the Envoy | |||
// deprecation scripts. | |||
"envoy.deprecated_features.deprecated.proto:is_deprecated_fatal", | |||
"envoy.deprecated_features.bootstrap.proto:runtime", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: I would probably alpha sort all of these if possible.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I will alpha order when I do my follow up PR.
"use_original_dst" and "bind_to_port" are two complementary parts of the "virtual listeners" feature, and they should be deprecated together. However, they are both currently exempted (see: envoyproxy#5355), so revert the change from envoyproxy#7549. Signed-off-by: Piotr Sikora <piotrsikora@google.com>
"use_original_dst" and "bind_to_port" are two complementary parts of the "virtual listeners" feature, and they should be deprecated together. However, they are both currently exempted (see: envoyproxy#5355), so revert the change from envoyproxy#7549. Signed-off-by: Piotr Sikora <piotrsikora@google.com>
Flipping the following deprecated fields to be fatal-by-default
runtime from bootstrap.proto
catch_all_cluster from redis_proxy.proto
use_original_dst from lds.proto
max_stats from server_info.proto
cluster from redis_proxy.proto
max_obj_name_len from server_info.proto
Fixing a typo in release instructions
Undeprecating hosts as we're not going to remove it until v3.
Fixing canonical configs to use legal fields (see #7548 for forward-fixing this)
Risk Level: High (for folks ignoring their deprecation warnings)
Testing: //test/... (fixed canonical configs)
Docs Changes: no (should there be?)
Release Notes: no (should there be?)