-
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] delta-XDS state tracking is broken when there is an exception thrown when watchmap loading the config. #20790
Comments
/cc @yanavlasov |
One way to resolve this would be tracking state of resources using the actual per-resource subscriptions, with the state dictionary taking resource_name->reference to the source of truth. Requires quite some plumbing tho. |
cc @adisuissa |
Envoy should probably delay the update of the tracked resource version (for non-wildcard resource and for wildcard resource) until after the call to the |
Note that this impacts a reconnect scenario, as Envoy will send an initial_resource_version with resources and versions that may have been NACK'ed. |
…23214) Fixes delta-xDS protocol resource state tracking. Prior to this PR, the implementation updated the state of a resource (tracked version, TTL), even if the fetched config was NACKed. This PR changes it to only update the tracked state after a resource was successfully ingested, and an ACK will be sent. Note that this PR impacts the TTL of a resource, as now TTL timer starts after the resource was ingested rather than before. Risk Level: Medium for delta-xDS usage. Testing: Added unit tests. Docs Changes: N/A. Release Notes: Added release note. Platform Specific Features: N/A. Runtime guard: Can be reverted by setting envoy.reloadable_features.delta_xds_subscription_state_tracking_fix to false. Fixes #20790 Signed-off-by: Adi Suissa-Peleg <adip@google.com>
Fixes delta-xDS protocol resource state tracking. Prior to this PR, the implementation updated the state of a resource (tracked version, TTL), even if the fetched config was NACKed. This PR changes it to only update the tracked state after a resource was successfully ingested, and an ACK will be sent. Note that this PR impacts the TTL of a resource, as now TTL timer starts after the resource was ingested rather than before. This PR is essentially #23214 (which was reverted in #23335) with more coverage. Risk Level: Medium for delta-xDS usage. Testing: Added unit tests. Docs Changes: N/A. Release Notes: Added release note. Platform Specific Features: N/A. Runtime guard: Can be reverted by setting envoy.reloadable_features.delta_xds_subscription_state_tracking_fix to false. Fixes #20790 Signed-off-by: Adi Suissa-Peleg <adip@google.com>
Title: state tracking is broken when there is a partial accept
Description:
if there is a partial accept in Delta-XDS, i.e. route-table #50's loading throws an exception, out of 100 routeConfigurations in the batch, the RDS state is updated with the other 50 route tables not yet updated/inserted.
Even reconnection won't fix this issue, as the client believes it has the 50 not loaded route tables with some version already.
Repro steps:
See description.
The text was updated successfully, but these errors were encountered: