Fix MockServer port collision on Windows (#5748) #5903
+109
−37
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.
Issue #5748: Multiple MockServer instances were getting assigned the same port on Windows, causing test failures. The temporary workaround (commit 0a4f2ef) leaked MockServer instances to prevent port recycling, but this caused memory leaks.
Solution
Implemented SafeMockServer wrapper that:
Tracks used ports with thread-safe Mutex<HashSet>
Retries up to 100 times to find unique ports
Automatically cleans up ports on drop (no memory leaks)
Provides transparent interface via Deref trait
Changes
New: crates/meilisearch/tests/common/mock_server.rs - SafeMockServer implementation
Modified: Updated all test files to use SafeMockServer instead of MockServer
vector/openai.rs - All mock creation functions
vector/rest.rs - All mock creation functions
search/multi/proxy.rs - LocalMeili struct
common/mod.rs - Module export and fragment_mock_server
Testing
Drop-in replacement for MockServer
Thread-safe port allocation prevents collisions
Proper cleanup prevents memory leaks
Ready to revert commit 0a4f2ef once confirmed working