RUBY-3778 Server deprioritizing in replica sets#2993
Merged
comandeo-mongo merged 1 commit intomongodb:masterfrom Mar 5, 2026
Merged
RUBY-3778 Server deprioritizing in replica sets#2993comandeo-mongo merged 1 commit intomongodb:masterfrom
comandeo-mongo merged 1 commit intomongodb:masterfrom
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
Updates retry server selection to avoid automatically deprioritizing the failed server in replica sets unless the retryable error indicates server overload (via the SystemOverloadedError label), while preserving existing behavior for sharded and load-balanced topologies.
Changes:
- Add error-aware deprioritization logic to
Mongo::Retryable.select_server(replica set: only whenSystemOverloadedErrorlabel; sharded/load-balanced: always). - Pass the triggering error into retry server selection for both read and write retry paths (writes also track the most recent retry error).
- Add integration coverage for replica set retry behavior with/without
SystemOverloadedErrorlabel; update a unit spec cluster double to stub new topology predicates.
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| spec/mongo/retryable_spec.rb | Stubs sharded?/load_balanced? on a cluster double to match new retry selection logic. |
| spec/integration/retryable_reads_errors_spec.rb | Adds replica set integration tests asserting retry server changes based on SystemOverloadedError label. |
| lib/mongo/retryable/write_worker.rb | Threads retry error context into server selection during write retries. |
| lib/mongo/retryable/read_worker.rb | Threads original read error context into server selection during read retries. |
| lib/mongo/retryable.rb | Implements error-aware server deprioritization (replica set vs sharded/load-balanced). |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
You can also share your feedback on Copilot code review. Take the survey.
jamis
approved these changes
Mar 5, 2026
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.
No description provided.