nic-6443 opened a new pull request, #13708:
URL: https://github.com/apache/apisix/pull/13708

   ### Description
   
   Bumps `nginx-lua-prometheus-api7` to `0.20260716`, which fixes the infinite 
busy loop behind #12275 — workers pegged at 100% CPU on a full 
`prometheus-metrics` shared dict, unresponsive even after traffic is removed.
   
   The root cause is in the library's `KeyIndex:add()`: once the shared dict is 
full, `__ngx_prom__key_count` can be LRU-evicted (it is an ordinary node, only 
refreshed when a *new* series is registered, so it goes cold under steady 
traffic). `sync()` then reads it as `nil → 0`, and every new series does 
`dict:add()` against an already-occupied slot → `"exists"` → retry the same 
slot → forever, without ever yielding. Full analysis, profiles and a standalone 
reproduction are in 
https://github.com/apache/apisix/issues/12275#issuecomment-4988690889.
   
   The fix (api7/nginx-lua-prometheus#16, released as `0.20260716`) advances 
the counter past the occupied slot on a repeated collision, so the next 
`sync()` adopts that slot's occupant and progress resumes; a hard cap makes it 
degrade to the existing dict-full error instead of spinning. The regression 
test lives with the fix in the library repo.
   
   I ran `t/plugin/prometheus*.t` locally against the bumped dependency and the 
prometheus suites pass. The only failures are the pre-existing `worker-events 
... failed to receive the header bytes: closed` shutdown-race flake, which 
reproduces identically on the current `0.20260623` pin and is unrelated to this 
change.
   
   #### Which issue(s) this PR fixes:
   
   Fixes #12275
   
   ### Checklist
   
   - [x] I have explained the need for this PR and the problem it solves
   - [x] I have explained the changes or the new features added to this PR
   - [x] I have added tests corresponding to this change (the regression test 
ships with the library fix in api7/nginx-lua-prometheus#16; this PR is the 
version bump that pulls it in)
   - [ ] I have updated the documentation to reflect this change (dependency 
bump only, no doc change needed)
   - [x] I have verified that this change is backward compatible
   


-- 
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