-
Notifications
You must be signed in to change notification settings - Fork 689
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
use envoy xDS server for featuretests #6255
Conversation
Signed-off-by: Steve Kriss <[email protected]>
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## main #6255 +/- ##
==========================================
+ Coverage 81.19% 81.55% +0.35%
==========================================
Files 133 133
Lines 15803 15800 -3
==========================================
+ Hits 12831 12885 +54
+ Misses 2678 2618 -60
- Partials 294 297 +3
|
sort.Slice(want.Resources, func(i, j int) bool { return string(want.Resources[i].Value) < string(want.Resources[j].Value) }) | ||
sort.Slice(r.Resources, func(i, j int) bool { return string(r.Resources[i].Value) < string(r.Resources[j].Value) }) |
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.
This was the biggest change required to get most feature tests to pass, and worth some discussion. It seems that with the go-control-plane server, the order that resources are in when creating the snapshot is not preserved, because internally the slice is converted to a map. Historically, I believe there may have been some inefficiencies in Envoy when resources (particularly Listeners?) were provided in a different order across responses, which is why Contour generally sorted resources before responding with them, but it's definitely possible that those are no longer issues.
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.
yeah I think everything besides the route matches in a RouteConfig should be stored in envoy in a constant-time lookup container
but then as you say i see this old issue: #1159
i wonder if that is still the case...
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'll do a few more tests here and look at the Envoy debug logs to see if I can discern anything, but I have to think if there were any issues related to this, other users of go-control-plane would've run into them by now
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.
Seems like envoy computes a hash of each resource and uses that to detect when there are changes. Everything in the logs look fine as far as I can tell.
Updates projectcontour#2134. Signed-off-by: Steve Kriss <[email protected]>
Closes #6254.