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

Put dns_resolution_config in dns_filter.proto files as deprecated #18053

Closed
yanjunxiang-google opened this issue Sep 9, 2021 · 13 comments
Closed
Labels
area/protobuf enhancement Feature requests. Not bugs or questions. stale stalebot believes this issue/PR has not been touched recently waiting

Comments

@yanjunxiang-google
Copy link
Contributor

yanjunxiang-google commented Sep 9, 2021

Title: Put dns_resolution_config in dns_filter.proto files as deprecated

Description:
With typed_dns_resolver_config being supported in #17479, dns_resolution_config in dns_filter.proto will be deprecated. And changing test cases in dns_filter_test.cc and dns_filter_integration_test.cc to use typed_dns_resolver_config.

@yanjunxiang-google yanjunxiang-google added enhancement Feature requests. Not bugs or questions. triage Issue requires triage labels Sep 9, 2021
@yanjunxiang-google yanjunxiang-google changed the title Put dns_resolution_config in cluster.proto as deprecated Put dns_resolution_config in proto files as deprecated Sep 9, 2021
@zuercher zuercher added area/protobuf and removed triage Issue requires triage labels Sep 10, 2021
@yanjunxiang-google yanjunxiang-google changed the title Put dns_resolution_config in proto files as deprecated Put dns_resolution_config in dns_filter.proto files as deprecated Sep 14, 2021
@yanjunxiang-google yanjunxiang-google changed the title Put dns_resolution_config in dns_filter.proto files as deprecated Put dns_resolution_config in dns_filter.proto files as reserved or just remove it Sep 14, 2021
@suniltheta
Copy link
Contributor

I believe reserving this field dns_resolution_config would be less intrusive and easier approach. As we are still in Alpha on dns_filter.proto, no harm done on not supporting the configuration via reserved & not-implemented field dns_resolution_config.

The reason it should be reserved and not removed because v1.19.2 will not have typed_dns_resolver_config back ported and would still need to support dns_resolution_config, we don't want to break the compatibility between control plane supporting v1.19.2 & v1.20.0+.

I see that #17479 has already taken the step towards deprecating dns_resolution_config field, thanks.

@yanjunxiang-google
Copy link
Contributor Author

Thanks for the information @suniltheta !

If dns_filter feature will be supported by Envoy and control-plane in the upcoming v1.19.2 & v.12.0+ , but typed_dns_resolver_config won't be there., can we put dns_resolution_config as "reserved"? Should we put it as "deprecated" and go through normal deprecation process?

@yanjunxiang-google
Copy link
Contributor Author

BTW, we are not going to put dns_resolution_config as deprecated in #17479. Doing that is causing some CI scripts failure We are exploring the options how to deprecate it.
If we can put it as "reserved", and replace dns_resolution_config in dns_filter_test.cc/dns_filter_integration_test.cc with typed_dns_resolver_config , that seem to be a clean solution moving forward.

@suniltheta
Copy link
Contributor

If we can put it as "reserved", and replace dns_resolution_config in dns_filter_test.cc/dns_filter_integration_test.cc with typed_dns_resolver_config , that seem to be a clean solution moving forward.

I totally agree with this.

Once these changes are done, then we can move the dns_filter.proto to non-alpha, as Matt suggested on #17943. Hopefully this can be done before v1.20 release.

cc @jpeach for your thoughts on if we can mark dns_resolution_config field 5 as reserved by v1.20 release.

@suniltheta
Copy link
Contributor

Update: I redact what I said earlier about just reserving the field number 5 for dns_resolution_config.
@jpeach correct me if I am wrong here.

We still want control plane with v1.20.0 API to continue to support v1.18 & v1.19.2. So that means we cannot just reserve this field number 5. We still need to have dns_resolution_config marked as deprecated and annotated with [#not-implemented-hide:]. This will be similar to what we maintain for upstream_resolvers field. For ref comment on earlier PR.

Also we should replace dns_resolution_config in dns_filter_test.cc/dns_filter_integration_test.cc with typed_dns_resolver_config as mentioned by @yanjunxiang-google.

@yanjunxiang-google
Copy link
Contributor Author

yanjunxiang-google commented Sep 14, 2021 via email

@yanjunxiang-google
Copy link
Contributor Author

BTW, I am not too familiar with the release planning. But if we can make typed_dns_resolver_config support in the same release with dns_filter (since it is not released yet), then we can get rid of this dns_resolution_config, right?

@jpeach
Copy link
Contributor

jpeach commented Sep 14, 2021

We still want control plane with v1.20.0 API to continue to support v1.18 & v1.19.2. So that means we cannot just reserve this field number 5. We still need to have dns_resolution_config marked as deprecated and annotated with [#not-implemented-hide:]. This will be similar to what we maintain for upstream_resolvers field. For ref comment on earlier PR.

Yeh, pretty sure that this is the best option. The go-control-plane project will release with an arbitrary snapshot of Envoy protobufs. Control planes downstream of that will then use those protobufs to program some version of Envoy. If you remove the field definition and simply reserve it, then someone will probably have to fork the protobufs to restore the definition.

IMHO, Envoy doesn't need to carry any code to implement or migrate the field. Control planes can be sophisticated enough to populate the right fields for the right Envoy versions.

BTW, I am not too familiar with the release planning. But if we can make typed_dns_resolver_config support in the same release with dns_filter (since it is not released yet), then we can get rid of this dns_resolution_config, right?

It seems fine to me to drop the implementation from Envoy (since it is alpha) and carry the old protobuf definitions for compatibility.

@yanjunxiang-google yanjunxiang-google changed the title Put dns_resolution_config in dns_filter.proto files as reserved or just remove it Put dns_resolution_config in dns_filter.proto files as deprecated Sep 15, 2021
@yanjunxiang-google
Copy link
Contributor Author

Thanks @suniltheta @jpeach for your info.

Here is my plan: 1) put dns_resolution_config in dns_filter.proto as deprecated. 2) Changing test cases in dns_filter_test.cc and dns_filter_integration_test.cc to use typed_dns_resolver_config so the Envoy CI can pass with this deprecation. 3) There is code added in #17479: dns_factory_test.cc which test this deprecated dns_resolution_config field in dns_filter.proto. Those code will be kept since they are not causing any CI scripts failure.

@github-actions
Copy link

This issue has been automatically marked as stale because it has not had activity in the last 30 days. It will be closed in the next 7 days unless it is tagged "help wanted" or "no stalebot" or other activity occurs. Thank you for your contributions.

@github-actions github-actions bot added the stale stalebot believes this issue/PR has not been touched recently label Oct 15, 2021
@yanjunxiang-google
Copy link
Contributor Author

/wait

@github-actions github-actions bot removed the stale stalebot believes this issue/PR has not been touched recently label Oct 15, 2021
@github-actions
Copy link

This issue has been automatically marked as stale because it has not had activity in the last 30 days. It will be closed in the next 7 days unless it is tagged "help wanted" or "no stalebot" or other activity occurs. Thank you for your contributions.

@github-actions github-actions bot added the stale stalebot believes this issue/PR has not been touched recently label Nov 14, 2021
@yanjunxiang-google
Copy link
Contributor Author

This issue is fixed by : Put dns_resolution_config field in dns_filter.proto as deprecated #18649. Closing it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/protobuf enhancement Feature requests. Not bugs or questions. stale stalebot believes this issue/PR has not been touched recently waiting
Projects
None yet
Development

No branches or pull requests

4 participants