Skip to content
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

Merged
merged 2 commits into from
Jul 16, 2019

Conversation

alyssawilk
Copy link
Contributor

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?)

Signed-off-by: Alyssa Wilk <alyssar@chromium.org>
@alyssawilk
Copy link
Contributor Author

@htuch for API stuff and layered runtime
@envoyproxy/senior-maintainers for any objection to fatal-by-defaults

This PR should land with an envoy-announce email so please don't merge it unless you want to send that email :-)
Given it's pretty close to EoD Thursday I'll likely merge it Monday.

Copy link
Member

@mattklein123 mattklein123 left a 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",
Copy link
Member

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?

Copy link
Contributor Author

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:
Copy link
Member

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:
Copy link
Member

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:
Copy link
Member

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",
Copy link
Member

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.deprecated_features.v1_filter_json_config")) {
also?

Copy link
Contributor Author

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?

Copy link
Member

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).

Copy link
Contributor Author

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

Copy link
Member

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. :)

Copy link
Contributor Author

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?

Copy link
Member

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>
Copy link
Member

@mattklein123 mattklein123 left a 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",
Copy link
Member

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.

Copy link
Member

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.

@mattklein123 mattklein123 merged commit 7a55417 into envoyproxy:master Jul 16, 2019
PiotrSikora added a commit to PiotrSikora/envoy that referenced this pull request Jul 17, 2019
"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>
mattklein123 pushed a commit that referenced this pull request Jul 18, 2019
"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: #5355), so revert
the change from #7549.

Signed-off-by: Piotr Sikora <piotrsikora@google.com>
TAOXUY pushed a commit to TAOXUY/envoy that referenced this pull request Jul 22, 2019
"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>
@alyssawilk alyssawilk deleted the release3 branch July 31, 2019 20:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants