core: remove redundant SubchannelPicker refreshes in RoundRobinLoadBalancer
* Remove redundant SubchannelPicker refreshes in RoundRobinLoadBalancer - Ensure active subchannel list and round-robin index is only regenerated/refreshed when it changes - Make it so that Subchannels exist in subchannels map iff their state != SHUTDOWN - Add EmptyPicker class since logic for this case is disjoint from the non-empty case * remove explicit initialization of boolean ready field per @carl-mastrangelo's review comment * minor restructuring to make logic clearer; more explanatory comments * move some checks inside updateBalancingState method for clarity * store current state and picker in RRLB, only update when new one is diff * some more simplification/refactoring; improve test coverage - remove now redundant check in handleSubchannelState - collapse getAggregatedState() and getAggregatedError() into handleBalancingState() - have both pickers extend new RoundRobinPicker, move areEquivalentPickers() logic into RoundRobinPicker.isEquivalentTo() - extend unit tests to cover some additional cases * Address latest review comments from @zhangkun83 - Use explicit check for non-empty list instead of assert - Change EmptyPicker.status to be non-nullable - Further test coverage improvement including explicit picker comparison tests * use EMPTY_OK instead of Status.OK for initial empty picker
Loading
Please sign in to comment