fix: health check probes blocked indefinitely when EDS initialFetchTimeout is 0s - #46667
fix: health check probes blocked indefinitely when EDS initialFetchTimeout is 0s#46667yuehaii wants to merge 2 commits into
Conversation
…eck_after_cluster_warming is enabled Signed-off-by: hai.yue <20416005+yuehaii@users.noreply.github.com>
Signed-off-by: hai.yue <20416005+yuehaii@users.noreply.github.com>
|
/retest |
adisuissa
left a comment
There was a problem hiding this comment.
Thanks!
Can you clarify what is the expected behavior in the case where initial-fetch-timeout is 0, no EDS response was received for that cluster (the cluster is still warming), and there is a health-check request?
My understanding is that the health-check should just fail, as with any cluster that is in a warming state, correct?
Please add regression tests to make sure the correct behavior is maintained
/wait
with initialFetchTimeout: 0s, the cluster stays in warming state until EDS delivers endpoints. and there is a feature "envoy.reloadable_features.health_check_after_cluster_warming" declared with RUNTIME_GUARD which means it is enabled by default. the feature "envoy.reloadable_features.health_check_after_cluster_warming" will be used as gate in setHealthChecker function which is called during cluster setup. If this feature off, the health checker will be start immediately. so the health check probes didn't start until onInitDone(), which was blocked by 'initialFetchTimeout: 0s'. since no timer fires onConfigUpdateFailed to exits init warming. I will add a regression test case soon. |
Commit Message:
when a cluster is configured with EDS and initialFetchTimeout: 0s, the cluster stays in warming state indefinitely until EDS delivers its first response, no timeout fires to unblock it.
Additional Description:
added a bypass in ClusterImplBase::setHealthChecker(). when health_check_after_cluster_warming is enabled, health checks are still started immediately if both conditions hold:
Risk Level:
Low
Testing:
Will be added soon.
Release Notes:
fix health check probes being blocked indefinitely on EDS clusters configured with initialFetchTimeout: 0s. With health_check_after_cluster_warming enabled(default), health checks are no longer deferred when EDS warming has no timeout deadline.
Fixes #46666