We have signals from the OutlierDetector to the DefaultLoadBalancer that signals when our endpoints health changes. However, for XdsOutlierDetector, we compute this as the difference on each iteration but consecutive 5xx is tripped immediately, so it may not be captured, and neither will recoveries which are most likely going to flip outside of an outlier detector scan.
Modifications:
Instead of checking before and after each scan, save the last health status and check if that changed since the last scan.
Result:
We catch health transitions every time instead of only when the happen during an outlier scan.
Motivation:
We have signals from the OutlierDetector to the DefaultLoadBalancer that signals when our endpoints health changes. However, for XdsOutlierDetector, we compute this as the difference on each iteration but consecutive 5xx is tripped immediately, so it may not be captured, and neither will recoveries which are most likely going to flip outside of an outlier detector scan.
Modifications:
Result:
We catch health transitions every time instead of only when the happen during an outlier scan.