grpc/src/core/load_balancing
Mark D. Roth 76c93769e2 [LB policies] fix handling of UpdateLocked() result (#36463)
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.

Closes #36463

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/36463 from markdroth:lb_reresolve_for_lazy_child_creation 49043b2d80
PiperOrigin-RevId: 629755047
2024-05-01 10:07:46 -07:00
..
grpclb [reorg] move channelz code to src/core/channelz (#36380) 2024-04-19 13:05:23 -07:00
outlier_detection [clang-format] run for everything under src/core (#36381) 2024-04-18 13:46:42 -07:00
pick_first [clang-format] run for everything under src/core (#36381) 2024-04-18 13:46:42 -07:00
priority [LB policies] fix handling of UpdateLocked() result (#36463) 2024-05-01 10:07:46 -07:00
ring_hash [LB policies] fix handling of UpdateLocked() result (#36463) 2024-05-01 10:07:46 -07:00
rls [LB policies] fix handling of UpdateLocked() result (#36463) 2024-05-01 10:07:46 -07:00
round_robin [LB policies] fix handling of UpdateLocked() result (#36463) 2024-05-01 10:07:46 -07:00
weighted_round_robin [LB policies] fix handling of UpdateLocked() result (#36463) 2024-05-01 10:07:46 -07:00
weighted_target [clang-format] run for everything under src/core (#36381) 2024-04-18 13:46:42 -07:00
xds [clang-format] run for everything under src/core (#36381) 2024-04-18 13:46:42 -07:00
.clang-format [clang-format] Remove requirement that port_platform.h is at the top (#36296) 2024-04-11 09:39:05 -07:00
address_filtering.cc [clang-format] run for everything under src/core (#36381) 2024-04-18 13:46:42 -07:00
address_filtering.h [clang-format] run for everything under src/core (#36381) 2024-04-18 13:46:42 -07:00
backend_metric_data.h [clang-format] run for everything under src/core (#36381) 2024-04-18 13:46:42 -07:00
backend_metric_parser.cc [clang-format] run for everything under src/core (#36381) 2024-04-18 13:46:42 -07:00
backend_metric_parser.h [clang-format] run for everything under src/core (#36381) 2024-04-18 13:46:42 -07:00
child_policy_handler.cc [clang-format] run for everything under src/core (#36381) 2024-04-18 13:46:42 -07:00
child_policy_handler.h [clang-format] run for everything under src/core (#36381) 2024-04-18 13:46:42 -07:00
delegating_helper.h [clang-format] run for everything under src/core (#36381) 2024-04-18 13:46:42 -07:00
endpoint_list.cc [LB policies] fix handling of UpdateLocked() result (#36463) 2024-05-01 10:07:46 -07:00
endpoint_list.h [LB policies] fix handling of UpdateLocked() result (#36463) 2024-05-01 10:07:46 -07:00
health_check_client.cc [reorg] move channelz code to src/core/channelz (#36380) 2024-04-19 13:05:23 -07:00
health_check_client.h [clang-format] run for everything under src/core (#36381) 2024-04-18 13:46:42 -07:00
health_check_client_internal.h [clang-format] run for everything under src/core (#36381) 2024-04-18 13:46:42 -07:00
lb_policy.cc [clang-format] run for everything under src/core (#36381) 2024-04-18 13:46:42 -07:00
lb_policy.h [clang-format] run for everything under src/core (#36381) 2024-04-18 13:46:42 -07:00
lb_policy_factory.h [clang-format] run for everything under src/core (#36381) 2024-04-18 13:46:42 -07:00
lb_policy_registry.cc [clang-format] run for everything under src/core (#36381) 2024-04-18 13:46:42 -07:00
lb_policy_registry.h [clang-format] run for everything under src/core (#36381) 2024-04-18 13:46:42 -07:00
oob_backend_metric.cc [reorg] move channelz code to src/core/channelz (#36380) 2024-04-19 13:05:23 -07:00
oob_backend_metric.h [clang-format] run for everything under src/core (#36381) 2024-04-18 13:46:42 -07:00
oob_backend_metric_internal.h [clang-format] run for everything under src/core (#36381) 2024-04-18 13:46:42 -07:00
subchannel_interface.h [clang-format] run for everything under src/core (#36381) 2024-04-18 13:46:42 -07:00