-
Notifications
You must be signed in to change notification settings - Fork 239
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
A88: xDS Data Error Handling #466
Open
markdroth
wants to merge
20
commits into
grpc:master
Choose a base branch
from
markdroth:xds_data_errors
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
+531
−0
Conversation
This file contains 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
This was referenced Dec 11, 2024
copybara-service bot
pushed a commit
to grpc/grpc
that referenced
this pull request
Jan 2, 2025
This is the first part of implementing gRFC A88 (grpc/proposal#466). This introduces the new watcher API but does not change any of the existing behavior. This table summarizes the API changes and behavior for each case: Case | Old API | New API | Behavior ------- | ---------- | ------------ | ------------ Resource timer fires | `OnResourceDoesNotExist()` | `OnResourceChanged(NOT_FOUND)` | Fail data plane RPCs LDS or CDS resource deletion | `OnResourceDoesNotExist()` | `OnResourceChanged(NOT_FOUND)` | Drop resource and fail data plane RPCs xDS channel reports TRANSIENT_FAILURE | `OnError()` | `OnResourceChanged(status)` if resource NOT already cached; `OnAmbientError(status)` otherwise | Continue using cached resource, if any; otherwise, fail data plane RPCs ADS stream terminates without receiving a response | `OnError()` | `OnResourceChanged(status)` if resource NOT already cached; `OnAmbientError(status)` otherwise | Continue using cached resource, if any; otherwise, fail data plane RPCs Invalid resource update (client NACK) | `OnError()` | `OnResourceChanged(status)` if resource NOT already cached; `OnAmbientError(status)` otherwise | Continue using cached resource, if any; otherwise, fail data plane RPCs Valid resource update | `OnResourceChanged(resource)` | `OnResourceChanged(resource)` | use the new resource This PR also ensures that we add the node ID to all error messages emitted from the XdsClient. We were doing this for *most* errors before, but there were a few cases missing. Finally, this PR also changes the behavior for two error cases that we were handling outside of the XdsClient: - Receiving a socket listener instead of an API listener on the client side. - Receiving a RouteConfiguration that does not contain a matching VirtualHost. In both of those cases, we were previously ignoring the update and sticking with the previous version of the resource, which is not safe, because there's absolutely no feedback about the problem: the XdsClient cache has accepted the new resource, which means that the problem will not show up in the XdsClient metrics or in CSDS, and there will be no NACK sent to the control plane. With this PR, we now fail data plane RPCs in those cases instead. Closes #38269 COPYBARA_INTEGRATE_REVIEW=#38269 from markdroth:xds_watcher_api_change 1424fc1 PiperOrigin-RevId: 711506013
copybara-service bot
pushed a commit
to grpc/grpc
that referenced
this pull request
Jan 8, 2025
…_data_errors" (#38278) Another piece of gRFC A88 (grpc/proposal#466). Note that even with the feature disabled, this changes the way that ignored resource deletions are reflected in CSDS and XdsClient metrics. As a side effect, also fixes one of the edge cases described in #38094. Closes #38278 COPYBARA_INTEGRATE_REVIEW=#38278 from markdroth:xds_client_fail_on_data_errors 7d31238 PiperOrigin-RevId: 713348335
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.
No description provided.