Fix #2412: Critical (but rare) GC bug that can lead to async tasks never completing if the multiplexer is not held by the consumer (#2408 by @mgravell)
Fix #2392: Dequeue all timed out messages from the backlog when not connected (including Fire+Forget) (#2397 by @kornelpal)
Fix #2400: Expose ChannelMessageQueue as IAsyncEnumerable<ChannelMessage> (#2402 by @mgravell)
Adds: Better error messages (over generic timeout) when commands are backlogged and unable to write to any connection (#2408 by @NickCraver)
Adds: Support for CLIENT SETINFO (lib name/version) during handshake; opt-out is via ConfigurationOptions; also support read of resp, lib-ver and lib-name via CLIENT LIST (#2414 by @mgravell)
Documentation: clarify the meaning of RedisValue.IsInteger re #2418 (#2420 by @mgravell)
Fix #2362: Set RedisConnectionException.FailureType to AuthenticationFailure on all authentication scenarios for better handling (#2367 by @NickCraver)
Fix #2368: Support RedisValue.Length() for all storage types (#2370 by @mgravell)
Adds: Support for EVAL_RO and EVALSHA_RO via IDatabase.ScriptEvaluateReadOnly/IDatabase.ScriptEvaluateReadOnlyAsync (#2168 by @shacharPash)
Fix #1458: Fixes a leak condition when a connection completes on the TCP phase but not the Redis handshake (#2238 by @NickCraver)
Internal: ServerSnapshot: Improve API and allow filtering with custom struct enumerator (#2337 by @mgravell)
2.6.86
Fix #1520 & #1660: When MOVED is encountered from a cluster, a reconfigure will happen proactively to react to cluster changes ASAP (#2286 by @NickCraver)
Fix #2249: Properly handle a fail state (new ClusterNode.IsFail property) for CLUSTER NODES and expose fail? as a property (IsPossiblyFail) as well (#2288 by @NickCraver)
Adds: IConnectionMultiplexer.ServerMaintenanceEvent (was on ConnectionMultiplexer but not the interface) (#2306 by @NickCraver)
Adds: To timeout messages, additional debug information: Sync-Ops (synchronous operations), Async-Ops (asynchronous operations), and Server-Connected-Seconds (how long the connection in question has been connected, or "n/a") (#2300 by @NickCraver)
2.6.80
Adds: last-in and cur-in (bytes) to timeout exceptions to help identify timeouts that were just-behind another large payload off the wire (#2276 by @NickCraver)
Adds: general-purpose tunnel support, with HTTP proxy "connect" support included (#2274 by @mgravell)
Removes: Package dependency (System.Diagnostics.PerformanceCounter) (#2285 by @NickCraver)
2.6.70
Fix: MOVED with NoRedirect (and other non-reachable errors) should respect the IncludeDetailInExceptions setting (#2267 by @mgravell)
Fix #2251 & #2265: Cluster endpoint connections weren't proactively connecting subscriptions in all cases and taking the full connection timeout to complete as a result (#2268 by @iteplov)
2.6.66
Fix #2182: Be more flexible in which commands are "primary only" in order to support users with replicas that are explicitly configured to allow writes (#2183 by @slorello89)
Adds: IConnectionMultiplexer now implements IAsyncDisposable (#2161 by @kimsey0)
Adds: IConnectionMultiplexer.GetServers() to get all IServer instances for a multiplexer (#2203 by @NickCraver)
Fix #2016: Align server selection with supported commands (e.g. with writable servers) to reduce Command cannot be issued to a replica errors (#2191 by @slorello89)
Performance: Optimization around timeout processing to reduce lock contention in the case of many items that haven't yet timed out during a heartbeat (#2217 by @NickCraver)
Fix #2223: Resolve sync-context issues (missing ConfigureAwait(false)) (#2229 by @mgravell)
Fix #2412: Critical (but rare) GC bug that can lead to async tasks never completing if the multiplexer is not held by the consumer (#2408 by mgravell)
Add: Better error messages (over generic timeout) when commands are backlogged and unable to write to any connection (#2408 by NickCraver)
Fix #2392: Dequeue all timed out messages from the backlog when not connected (including Fire+Forget) (#2397 by kornelpal)
Fix #2400: Expose ChannelMessageQueue as IAsyncEnumerable<ChannelMessage> (#2402 by mgravell)
Add: Support for CLIENT SETINFO (lib name/version) during handshake; opt-out is via ConfigurationOptions; also support read of resp, lib-ver and lib-name via CLIENT LIST (#2414 by mgravell)
Adds: Support for EVAL_RO and EVALSHA_RO via IDatabase.ScriptEvaluateReadOnly/IDatabase.ScriptEvaluateReadOnlyAsync (#2168 by shacharPash)
Fix #1458: Fixes a leak condition when a connection completes on the TCP phase but not the Redis handshake (#2238 by NickCraver)
Internal: ServerSnapshot: Improve API and allow filtering with custom struct enumerator (#2337 by mgravell)
2.6.86
Fix #1520 & #1660: When MOVED is encountered from a cluster, a reconfigure will happen proactively to react to cluster changes ASAP (#2286 by NickCraver)
Fix #2249: Properly handle a fail state (new ClusterNode.IsFail property) for CLUSTER NODES and expose fail? as a property (IsPossiblyFail) as well (#2288 by NickCraver)
Adds: IConnectionMultiplexer.ServerMaintenanceEvent (was on ConnectionMultiplexer but not the interface) (#2306 by NickCraver)
Adds: To timeout messages, additional debug information: Sync-Ops (synchronous operations), Async-Ops (asynchronous operations), and Server-Connected-Seconds (how long the connection in question has been connected, or "n/a") (#2300 by NickCraver)
2.6.80
Adds: last-in and cur-in (bytes) to timeout exceptions to help identify timeouts that were just-behind another large payload off the wire (#2276 by NickCraver)
Adds: general-purpose tunnel support, with HTTP proxy "connect" support included (#2274 by mgravell)
Removes: Package dependency (System.Diagnostics.PerformanceCounter) (#2285 by NickCraver)
2.6.70
Fix: MOVED with NoRedirect (and other non-reachable errors) should respect the IncludeDetailInExceptions setting (#2267 by mgravell)
Fix #2251 & #2265: Cluster endpoint connections weren't proactively connecting subscriptions in all cases and taking the full connection timeout to complete as a result (#2268 by iteplov)
2.6.66
Fix #2182: Be more flexible in which commands are "primary only" in order to support users with replicas that are explicitly configured to allow writes (#2183 by slorello89)
Adds: IConnectionMultiplexer now implements IAsyncDisposable (#2161 by kimsey0)
Adds: IConnectionMultiplexer.GetServers() to get all IServer instances for a multiplexer (#2203 by NickCraver)
Fix #2016: Align server selection with supported commands (e.g. with writable servers) to reduce Command cannot be issued to a replica errors (#2191 by slorello89)
... (truncated)
Commits
129d59f Timeouts: Improve Backlog handling and errors for users + GC rooting fixes fo...
f690d16 Clarify meaning of RedisValue.IsInteger (#2420)
ef388bd Fix #2392: Dequeue all timed out messages from the backlog when not connected...
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Bumps StackExchange.Redis from 2.1.30 to 2.6.104.
Release notes
Sourced from StackExchange.Redis's releases.
... (truncated)
Changelog
Sourced from StackExchange.Redis's changelog.
... (truncated)
Commits
129d59f
Timeouts: Improve Backlog handling and errors for users + GC rooting fixes fo...f690d16
Clarify meaning of RedisValue.IsInteger (#2420)ef388bd
Fix #2392: Dequeue all timed out messages from the backlog when not connected...1364ef8
Add support for CLIENT SETINFO (#2414)3f8fd08
Reference the correct default retry policy (#2410)9698aaa
expose IAsyncEnumerable on ChannelMessageQueue (#2402)867b04d
AppVeyor: move to VS 2022 image (#2387)6fa6a79
2.6.96 Release Notesab757f7
fix #2376 - avoid deadlock scenario when completing dead connections (#2378)51a7d90
Implement RedisValue.Length for all underlying storage kinds (#2370)Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)