perf(xds): add opt-in endpoint fast path for EDS-only pushes - #10022
Draft
zhaohuabing wants to merge 4 commits into
Draft
zhaohuabing wants to merge 4 commits into
zhaohuabing wants to merge 4 commits into
Conversation
✅ Deploy Preview for cerulean-figolla-1f9435 ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #10022 +/- ##
==========================================
- Coverage 81.31% 81.18% -0.14%
==========================================
Files 264 268 +4
Lines 40973 41279 +306
==========================================
+ Hits 33319 33514 +195
- Misses 7653 7764 +111
Partials 1 1 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
zhaohuabing
force-pushed
the
endpoint-fast-path-9777
branch
5 times, most recently
from
September 14, 2026 12:03
29fcd72 to
e0c9c33
Compare
Member
Author
|
/retest |
1 similar comment
Member
Author
|
/retest |
zhaohuabing
force-pushed
the
endpoint-fast-path-9777
branch
5 times, most recently
from
September 15, 2026 09:55
ff1e549 to
83de65a
Compare
Member
Author
|
/retest |
zhaohuabing
force-pushed
the
endpoint-fast-path-9777
branch
from
September 16, 2026 10:04
83de65a to
df65236
Compare
Member
Author
|
/retest |
zhaohuabing
force-pushed
the
endpoint-fast-path-9777
branch
2 times, most recently
from
September 17, 2026 02:32
c80b052 to
8ba9c9f
Compare
Endpoint updates currently reach Envoy only by riding along in a full rebuild, so their freshness is bound to whatever a full translation costs. This adds an opt-in fast path behind the EndpointFastPath runtime flag: the provider publishes EndpointSlice changes on a dedicated channel, and the xDS runner rebuilds only the affected ClusterLoadAssignments from per-cluster context captured during the last successful translation, patching them into the snapshot with only the EDS version bumped. Full translations still run for every endpoint event and remain authoritative; endpoint state the fast path has published is folded into a racing build before it is published, so a build cannot regress it. Changes that are not load-assignment-only, such as an endpoint count crossing zero or a gateway using EnvoyPatchPolicy or endpoint-modifying extension hooks, are left to the full path. Signed-off-by: Huabing (Robin) Zhao <zhaohuabing@gmail.com> Signed-off-by: Huabing (Robin) Zhao <huabing@tetrate.io>
zhaohuabing
force-pushed
the
endpoint-fast-path-9777
branch
from
September 17, 2026 02:50
8ba9c9f to
b6e2dcd
Compare
Signed-off-by: Huabing (Robin) Zhao <huabing@tetrate.io>
Signed-off-by: Huabing (Robin) Zhao <huabing@tetrate.io>
Signed-off-by: Huabing (Robin) Zhao <huabing@tetrate.io>
Member
Author
|
/retest |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Endpoint updates reach Envoy today only by riding along in a full rebuild, so how quickly they land depends on whatever a full translation happens to cost. At large scale that can be seconds, and under sustained pod churn the staleness is continuous rather than occasional.
This adds an opt-in fast path behind the
EndpointFastPathruntime flag, off by default. The provider publishes EndpointSlice changes on a dedicated channel, and the xDS runner rebuilds only the affected ClusterLoadAssignments from per-cluster context captured during the last successful translation, patching them into the snapshot with only the EDS version bumped. Everything else keeps the version Envoy already has, so listeners, clusters and routes are not resent.The full pipeline is untouched and still runs for every endpoint event, which is what keeps this safe. It remains authoritative and acts as the backstop: when the fast path cannot handle a change on its own — an endpoint count crossing zero, or a gateway using EnvoyPatchPolicy or endpoint-modifying extension hooks — it does nothing at all and lets the full path take it. Endpoint state the fast path has already published is folded into a racing build before that build goes out, so a slow build cannot regress endpoints back to what it read when it started.
Addresses #9777. The design, including the follow-up option of separating the configuration and endpoint paths in the provider, is written up here: https://docs.google.com/document/d/1r_-k6pu0eptbYucMgbilol91-0DmoekMf3MNums1luM/edit?usp=sharing