You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
performance: opt-in debounce for the provider reconcile (#9803)
* add opt-in debounce for the provider reconcile
Every watch in the gatewayapi controller enqueues the same GatewayClass
request, so the workqueue already collapses events that arrive while a
reconcile is in flight: the request sits in the dirty set and is requeued
exactly once when Done is called. What the workqueue does not do is wait.
When a reconcile is fast relative to the event rate the queue drains
between events, and each event then costs a full rebuild of the resource
tree even though only the resulting state matters.
Wrap the controller's workqueue so that Add is held until no new request
has arrived for debounce.after, bounded by debounce.max so that sustained
churn cannot defer a reconcile indefinitely. AddAfter and AddRateLimited
reach the embedded queue directly, so error backoff is never delayed.
Reuses the same top-level debounce field in the EnvoyGateway config, and
is disabled by default. Note that status is computed during reconcile, so
enabling this also delays status updates by up to debounce.max.
Signed-off-by: Huabing (Robin) Zhao <zhaohuabing@gmail.com>
Signed-off-by: Huabing (Robin) Zhao <huabing@tetrate.io>
* test: run conformance and e2e with debounce enabled
Add a debounce profile that turns on reconcile debouncing at the shipped
defaults, and a conformance and an e2e matrix entry that run against it,
so holding a burst of resource changes before reconciling is covered by
the existing suites rather than only by unit tests.
Conformance configures Envoy Gateway from the helm values profile, while
e2e additionally applies the envoy-gateway-config ConfigMap, so both
files are needed for the profile to take effect in both suites.
Signed-off-by: Huabing (Robin) Zhao <zhaohuabing@gmail.com>
Signed-off-by: Huabing (Robin) Zhao <huabing@tetrate.io>
* address comments
Signed-off-by: Huabing (Robin) Zhao <huabing@tetrate.io>
---------
Signed-off-by: Huabing (Robin) Zhao <zhaohuabing@gmail.com>
Signed-off-by: Huabing (Robin) Zhao <huabing@tetrate.io>
0 commit comments