| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
Sorry, something went wrong.
Per-host connection limits retained one semaphore and partition key for every host observed by the client, even after all permits were returned. Track holders and waiting acquisitions for each map entry. Remove an entry only after the final reference leaves, so a concurrent acquisition cannot detach from the semaphore used by later callers. Codex on behalf of Pavel Ptashyts Co-Authored-By: Codex <codex@openai.com>
Motivation: #2277 prevented the per-host connection map from growing indefinitely by reference counting entries and pruning them when they become idle. This relies on every release matching a prior reservation. An unmatched or double release can prematurely remove a live entry, allowing a new semaphore to be created and silently bypassing the per-host connection limit. The previous lookup method was also left unused in production and, if called, could create entries that were never eligible for pruning. Existing tests covered only a single host. Modification: Log unmatched releases so double releases are visible instead of silently corrupting the reference count. Remove the unused lookup method and update its remaining test. Add concurrent multi-host stress tests for both semaphore implementations, verifying that the per-host limit is enforced under contention and that all entries are pruned once released. Result: Unbalanced releases are now detectable, the unused code path has been removed, and the per-host connection limit is verified under concurrent multi-host workloads.
| Back | FazBrowse Home | New Git URL |
Summary
Motivation
PerHostConnectionSemaphore retained one semaphore and partition key for every host observed by a client. Long-lived clients connecting to many distinct hosts could therefore retain these entries indefinitely.
Testing
The required JDK 11 ./mvnw clean verify was not run because JDK 11 is not available in the local environment. CI will exercise the complete supported JDK matrix.
Codex on behalf of Pavel Ptashyts