-
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
[delta-xds] do not populate resource_names_subscribe with existing resources on reconnection for "wildcard" XDSes #16063
Comments
I agree, let's skip the subscribe. |
The one thing to be wary of is whether anyone might be relying on this behavior today. Is Delta xDS at the point that we can't break backwards compat? |
I dont believe so. |
Should this be wrapped with a runtime configurable flag? |
Is the current implementation adding a subscription for both wildcard and specific resources on reconnect? Or only for specific resources? It seems to me that if the intent is to subscribe for wildcard, envoy should send wildcard subscribe requests. I don't know how backwards compatibility factors into this. |
FWIW, I agree that the client should populate I think the value of See also related discussion in #15857 (comment) about the possible need for wildcard and non-wildcard subscriptions to coexist in the same stream. |
I think we are on the same page here. IIUC, resource_names_subscribe field is for "newly added not served " resources only. |
I don't think we can do that. The entries in I think the way to think about this is that the set of resource locators being subscribed to by the client is not something that survives a stream restart; it is purely local to each stream, so it must be completely reestablished via |
I'm aligned with presenting |
|
Sure, clarifying would be useful. |
I've updated the docs in the PR(#16153). |
When a wildcard xDS type (LDS/CDS/SRDS) reconnects from a delta xDS stream, prior to envoy `1.19.0` it would populate the `ResourceNamesSubscribe` field with the full list of currently subscribed items, instead of simply omitting it to infer that it wanted everything (which is what wildcard mode means). This upstream issue was filed in envoyproxy/envoy#16063 and fixed in envoyproxy/envoy#16153 which went out in Envoy `1.19.0` and is fixed in later versions (later refactored in envoyproxy/envoy#16855). This PR conditionally forces LDS/CDS to be wildcard-only even when the connected Envoy requests a non-wildcard subscription, but only does so on versions prior to `1.19.0`, as we should not need to do this on later versions. This fixes the failure case as described here: #11833 (comment) Co-authored-by: Huan Wang <[email protected]>
When a wildcard xDS type (LDS/CDS/SRDS) reconnects from a delta xDS stream, prior to envoy `1.19.0` it would populate the `ResourceNamesSubscribe` field with the full list of currently subscribed items, instead of simply omitting it to infer that it wanted everything (which is what wildcard mode means). This upstream issue was filed in envoyproxy/envoy#16063 and fixed in envoyproxy/envoy#16153 which went out in Envoy `1.19.0` and is fixed in later versions (later refactored in envoyproxy/envoy#16855). This PR conditionally forces LDS/CDS to be wildcard-only even when the connected Envoy requests a non-wildcard subscription, but only does so on versions prior to `1.19.0`, as we should not need to do this on later versions. This fixes the failure case as described here: #11833 (comment) Co-authored-by: Huan Wang <[email protected]>
When a wildcard xDS type (LDS/CDS/SRDS) reconnects from a delta xDS stream, prior to envoy `1.19.0` it would populate the `ResourceNamesSubscribe` field with the full list of currently subscribed items, instead of simply omitting it to infer that it wanted everything (which is what wildcard mode means). This upstream issue was filed in envoyproxy/envoy#16063 and fixed in envoyproxy/envoy#16153 which went out in Envoy `1.19.0` and is fixed in later versions (later refactored in envoyproxy/envoy#16855). This PR conditionally forces LDS/CDS to be wildcard-only even when the connected Envoy requests a non-wildcard subscription, but only does so on versions prior to `1.19.0`, as we should not need to do this on later versions. This fixes the failure case as described here: #11833 (comment) Co-authored-by: Huan Wang <[email protected]>
When a wildcard xDS type (LDS/CDS/SRDS) reconnects from a delta xDS stream, prior to envoy `1.19.0` it would populate the `ResourceNamesSubscribe` field with the full list of currently subscribed items, instead of simply omitting it to infer that it wanted everything (which is what wildcard mode means). This upstream issue was filed in envoyproxy/envoy#16063 and fixed in envoyproxy/envoy#16153 which went out in Envoy `1.19.0` and is fixed in later versions (later refactored in envoyproxy/envoy#16855). This PR conditionally forces LDS/CDS to be wildcard-only even when the connected Envoy requests a non-wildcard subscription, but only does so on versions prior to `1.19.0`, as we should not need to do this on later versions. This fixes the failure case as described here: #11833 (comment) Co-authored-by: Huan Wang <[email protected]> Co-authored-by: Huan Wang <[email protected]>
Title: Since LDS/CDS/SRDS are wildcard XDSes, we should not populate the resource_names_subscribe with existing resources.
Description:
On reconnection, DeltaXDS packs the already subscribed resources into resource_names_subscribe, which is used to mean "new subscription interests", this is confusing on the management server side since for "wildcard XDSes"( CDS/LDS/SRDS) it expects an empty resource list
https://github.com/envoyproxy/envoy/blob/main/source/common/config/delta_subscription_state.cc#L169-L182
We should also revisit this decision of "packing existing resources into resource_names_subscribe on reconnection" since
the "interests of these resources" is already expressed via initial_resource_versions.
The text was updated successfully, but these errors were encountered: