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

Audit xDS structures emitted to envoy for request-to-request stability #9725

Open
rboyer opened this issue Feb 5, 2021 · 0 comments
Open

Comments

@rboyer
Copy link
Member

rboyer commented Feb 5, 2021

We recently identified at least two places (#9651 & #9650) where two xDS discovery requests from envoy with otherwise unchanged effective content would be shipped in a slightly different internal ordering to envoy.

In some of these cases, envoy treats these as requiring a wholesale replacement of the underlying structures, rather than a no-op. For listeners this is particularly bad because depending upon the nature of the change it might have to drain traffic and close open sockets to correct.

We should audit all of the paths to produce xDS structures (EDS, CDS, LDS, RDS) to ensure that any deduplication process, list construction, etc is deterministic.

  • For deduplication, ensure that regardless of how the duplicates are traversed we always select the same winner
  • For list construction within an envoy object, ensure that there is a known order. For example, if filter chains are known to be independent we still need to render them into the overall list of filter chains in a specific order so ensure they go in the same order each time.

One notable thing we can ignore is the order of "x" items in an individual "xDS" resource response. For example if we emit 4 listeners to an LDS request, those don't have to be in any particular order.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant