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]

Reply via email to