Skip to content
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

xds: Allow child of cluster_impl LB to change #10091

Merged
merged 3 commits into from
Apr 24, 2023

Commits on Apr 21, 2023

  1. xds: Allow child of cluster_impl LB to change

    Under normal conditions the child LB of `ClusterImplLoadBalancer` does
    not fluctuate, based on the field used to configure load balancing in
    the xDS `Cluster` proto it is either:
    
    1. `WrrLocalityLoadBalancer` if the newer `load_balancing_policy` field
       is used
    2. `WeightedTargetLoadBalancer` if the legacy `lb_policy` field is used
    
    `ClusterImplLoadBalancer` currently assumes that this child does not
    change and so does not change the child LB when the name resolver sends an
    update. If the control plane does switch to using a different field for
    LB config, that update will have an LB config meant for the other child
    LB type. This will result in a ClassCastException and a channel panic.
    
    To address this, `ClusterImplLoadBalancer` will now use
    `GracefulSwitchLoadBalancer` and makes sure if the child policy changes
    the correct LB implementation is switched to.
    temawi committed Apr 21, 2023
    Configuration menu
    Copy the full SHA
    d50d989 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    e0da90d View commit details
    Browse the repository at this point in the history
  3. Remove unused field

    temawi committed Apr 21, 2023
    Configuration menu
    Copy the full SHA
    058f0f5 View commit details
    Browse the repository at this point in the history