feat(pool): Improve success rate of new connections#3518
Merged
ndyakov merged 19 commits intoredis:masterfrom Oct 30, 2025
Merged
feat(pool): Improve success rate of new connections#3518ndyakov merged 19 commits intoredis:masterfrom
ndyakov merged 19 commits intoredis:masterfrom
Conversation
…l are likely done in async flow
- Fix BenchmarkWantConnQueue_Dequeue timeout issue by limiting pre-population - Use object pooling in BenchmarkWantConnQueue_Enqueue to reduce allocations - Optimize BenchmarkWantConnQueue_EnqueueDequeue with reusable wantConn pool - Prevent GitHub Actions benchmark failures due to excessive memory usage Before: BenchmarkWantConnQueue_Dequeue ran for 11+ minutes and was killed After: All benchmarks complete in ~8 seconds with consistent performance
Member
|
@cyningsun thank you for opening this pr, looking forward to continuing the discussion. |
ndyakov
previously approved these changes
Oct 20, 2025
Member
ndyakov
left a comment
There was a problem hiding this comment.
@cyningsun Thank you for this contribution. I do think we can include it in the library, I do not see any issues with it at the moment.
ndyakov
previously approved these changes
Oct 22, 2025
Member
ndyakov
left a comment
There was a problem hiding this comment.
@cyningsun left a question regarding the pool balance, the rest looks good.
Contributor
Author
|
@ndyakov My apologies for the delayed response. The PR is now updated and ready for your next review. |
ndyakov
approved these changes
Oct 28, 2025
Member
ndyakov
left a comment
There was a problem hiding this comment.
Looks good to me, I am working on something related to the semaphore, let's merge this and I will try to resolve the conflicts on my end.
htemelski-oss
approved these changes
Oct 30, 2025
Contributor
htemelski-oss
left a comment
There was a problem hiding this comment.
Looks good to me too
naveenchander30
added a commit
to naveenchander30/go-redis
that referenced
this pull request
Jan 21, 2026
…ions, RingOptions, and FailoverOptions Add DialerRetries and DialerRetryTimeout fields to ClusterOptions, RingOptions, and FailoverOptions to allow users to configure connection retry behavior for cluster, ring, and sentinel clients. These options were previously only available for the standard Client and were added to connection pools in redis#3518. This change ensures feature parity across all client types. Changes: - Add DialerRetries and DialerRetryTimeout fields to ClusterOptions - Add DialerRetries and DialerRetryTimeout fields to RingOptions - Add DialerRetries and DialerRetryTimeout fields to FailoverOptions - Update clientOptions() methods to pass through these values - Update sentinelOptions() method to pass through these values - Add tests to verify correct pass-through behavior Fixes issue where ClusterClient, Ring, and FailoverClient users could not customize connection retry behavior and were stuck with defaults (5 retries, 100ms backoff).
ndyakov
added a commit
that referenced
this pull request
Jan 24, 2026
…ions, RingOptions, and FailoverOptions (#3686) Add DialerRetries and DialerRetryTimeout fields to ClusterOptions, RingOptions, and FailoverOptions to allow users to configure connection retry behavior for cluster, ring, and sentinel clients. These options were previously only available for the standard Client and were added to connection pools in #3518. This change ensures feature parity across all client types. Changes: - Add DialerRetries and DialerRetryTimeout fields to ClusterOptions - Add DialerRetries and DialerRetryTimeout fields to RingOptions - Add DialerRetries and DialerRetryTimeout fields to FailoverOptions - Update clientOptions() methods to pass through these values - Update sentinelOptions() method to pass through these values - Add tests to verify correct pass-through behavior Fixes issue where ClusterClient, Ring, and FailoverClient users could not customize connection retry behavior and were stuck with defaults (5 retries, 100ms backoff). Co-authored-by: Nedyalko Dyakov <1547186+ndyakov@users.noreply.github.com>
ndyakov
added a commit
that referenced
this pull request
Jan 24, 2026
…ions, RingOptions, and FailoverOptions (#3686) Add DialerRetries and DialerRetryTimeout fields to ClusterOptions, RingOptions, and FailoverOptions to allow users to configure connection retry behavior for cluster, ring, and sentinel clients. These options were previously only available for the standard Client and were added to connection pools in #3518. This change ensures feature parity across all client types. Changes: - Add DialerRetries and DialerRetryTimeout fields to ClusterOptions - Add DialerRetries and DialerRetryTimeout fields to RingOptions - Add DialerRetries and DialerRetryTimeout fields to FailoverOptions - Update clientOptions() methods to pass through these values - Update sentinelOptions() method to pass through these values - Add tests to verify correct pass-through behavior Fixes issue where ClusterClient, Ring, and FailoverClient users could not customize connection retry behavior and were stuck with defaults (5 retries, 100ms backoff). Co-authored-by: Nedyalko Dyakov <1547186+ndyakov@users.noreply.github.com>
ndyakov
added a commit
that referenced
this pull request
Jan 24, 2026
…ions, RingOptions, and FailoverOptions (#3686) Add DialerRetries and DialerRetryTimeout fields to ClusterOptions, RingOptions, and FailoverOptions to allow users to configure connection retry behavior for cluster, ring, and sentinel clients. These options were previously only available for the standard Client and were added to connection pools in #3518. This change ensures feature parity across all client types. Changes: - Add DialerRetries and DialerRetryTimeout fields to ClusterOptions - Add DialerRetries and DialerRetryTimeout fields to RingOptions - Add DialerRetries and DialerRetryTimeout fields to FailoverOptions - Update clientOptions() methods to pass through these values - Update sentinelOptions() method to pass through these values - Add tests to verify correct pass-through behavior Fixes issue where ClusterClient, Ring, and FailoverClient users could not customize connection retry behavior and were stuck with defaults (5 retries, 100ms backoff). Co-authored-by: Nedyalko Dyakov <1547186+ndyakov@users.noreply.github.com>
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
This PR continues the work from the previously closed PR (based on #3418), which was automatically closed after its base branch was merged.
It implements a context pattern for connection creation to prevent premature cancellation caused by short-lived request timeouts, which previously led to connection pool instability under high concurrency.
Solution
Changes
References