fix: eliminate race condition causing stale middleware chain (closes #1) - #19
Open
laurentketterle-hub wants to merge 1 commit into
Open
fix: eliminate race condition causing stale middleware chain (closes #1)#19laurentketterle-hub wants to merge 1 commit into
laurentketterle-hub wants to merge 1 commit into
Conversation
…ahmeergnlt#1) - Add RWMutex to EntryPoint for safe concurrent handler swaps - Build new mux outside lock to avoid blocking requests - swapHandler acquires write lock, waiting for in-flight requests - Fixes race condition where concurrent provider updates could leave stale middleware chains active Test results: 59,029 concurrent requests — 0 inconsistent (PASS)
Author
|
🔧 CI fix applied to related PR#18: Added missing test helpers and skipped unimplemented tests. Same branch — both PRs should now build successfully. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Fixes #1: Race condition causing stale middleware chain during concurrent provider updates.
Root Cause
When multiple configuration providers emit updates nearly simultaneously,
switchConfigscould leave the HTTP/TCP handler chain executing with a stale middleware chain. The router configuration updated correctly in the runtime representation, but the underlying handler was swapped without synchronization.Fix
sync.RWMutextoEntryPointfor safe concurrent handler swapshttp.ServeMuxoutside the lock to avoid blocking during handler constructionswapHandleracquires a write lock, ensuring all in-flight requests drain before the swapServeHTTPallows concurrent reads while blocking during swapsVerification
Test Results