yeganeahmadnejad commented on PR #13764: URL: https://github.com/apache/apisix/pull/13764#issuecomment-5135198423
Thanks @membphis and @bzp2010 for the thorough review — all 7 findings addressed in 6f9af8c1 (replied inline on each thread with specifics): - **half_open_max_calls not enforced under concurrency / n+1 admission**: the OPEN→HALF_OPEN transitioning request now counts itself as the first probe instead of returning early; the transition lock expires on its own short TTL instead of being deleted immediately. - **Racy tumbling-window reset**: replaced with fixed time buckets named by their own epoch, so aging out old data doesn't require any request to "reset" shared counters. - **Unbounded per-URI key cardinality + no TTL**: ratio-policy state is now scoped by conf_type/conf_id/conf_version (matching limit-count/limit-conn) with bounded TTLs throughout. - **Permanent half-open lockup on unclassified status codes**: added a dedicated "completed" counter that advances regardless of classification, so the close/reopen decision can't stall waiting for a status that will never come. - **docs/zh stray `healthy.successes` row**: removed from the unhealthy-ratio table. Also updated the half-open concurrency test (`t/plugin/api-breaker2.t`), which had pinned the buggy behavior (3 admissions against a limit of 2) as expected output. Verified with a standalone harness that mocks `ngx.shared`/`core` and replays the state machine — including genuinely concurrent `access()` calls arriving before any `log()` resolves — across open/half-open/close/reopen and window-aging scenarios. Happy to take another look at anything. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
