Skip to content

[LB policies] fix handling of UpdateLocked() result#36463

Closed
markdroth wants to merge 6 commits into
grpc:masterfrom
markdroth:lb_reresolve_for_lazy_child_creation
Closed

[LB policies] fix handling of UpdateLocked() result#36463
markdroth wants to merge 6 commits into
grpc:masterfrom
markdroth:lb_reresolve_for_lazy_child_creation

Conversation

@markdroth

@markdroth markdroth commented Apr 26, 2024

Copy link
Copy Markdown
Member

This fixes some TODOs added in #30809 for cases where LB policies lazily create child policies. Credit to @ejona86 for pointing out that simply calling RequestReresolution() in this case will ultimately result in the exponential backoff behavior we want.

This also adds some missing plumbing in code added as part of the dualstack work (in the endpoint_list library and in ring_hash) to propagate non-OK statuses from UpdateLocked(). When I first made the dualstack changes, I didn't bother with this plumbing, because there are no cases today where these code-paths will actually see a non-OK status (EndpointAddresses won't allow creating an endpoint with 0 addresses, and that's the only case where pick_first will return a non-OK status), and I wasn't sure if we would stick with the approach of returning status from UpdateLocked() due to the aforementioned lazy creation case. However, now that we have a good solution for the lazy creation case, I've added the necessary plumbing, just so that we don't have a bug if in the future pick_first winds up returning non-OK status in some other case.

I have not bothered to fix the propagation in the grpclb policy, since that looked like it would be slightly more work than it's really worth at this point.

@eugeneo eugeneo left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does not seem to have any tests... Is this change not observable from the outside.

(Approved)

@markdroth

Copy link
Copy Markdown
Member Author

It isn't really observable from the outside, because these cases can't happen today. I am adding the plumbing just as a defense against potential future changes that could introduce such cases.

@copybara-service copybara-service Bot closed this in 76c9376 May 1, 2024
@markdroth markdroth deleted the lb_reresolve_for_lazy_child_creation branch May 1, 2024 17:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants