Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
c37436b
clean rebased merge of marc/aa2
mgravell Jun 24, 2026
ac9ef43
mix merge/branch-drift
mgravell Jun 25, 2026
000154e
Merge branch 'main' into marc/aa2
mgravell Jun 29, 2026
185e98c
remove duplicated extension property
mgravell Jun 29, 2026
2ffd246
fix latency failing to update
mgravell Jun 29, 2026
6f4c68d
nits
mgravell Jun 29, 2026
7c5bb12
fix all-down connection scenarios
mgravell Jun 29, 2026
5bfb556
non-connected fix for subscriber
mgravell Jun 29, 2026
972f9db
Circuit breaker (#3126)
mgravell Jul 10, 2026
4eb4dbd
- expose health-check and circuit-breaker on the per-member options
mgravell Jul 10, 2026
8c7ae64
update health-check defaults
mgravell Jul 10, 2026
e43d1dd
allow adding a node without checking health
mgravell Jul 10, 2026
261391f
Merge branch 'main' into marc/aa2
mgravell Jul 10, 2026
797b838
prefer Volatile for reading counters
mgravell Jul 10, 2026
52a4514
more prefer volatile over interlocked reads
mgravell Jul 10, 2026
9e79dc4
more volatile
mgravell Jul 10, 2026
6e21e95
observe that LoggingTunnel is actually shipped
mgravell Jul 10, 2026
f88aa18
FailbackDelay
mgravell Jul 10, 2026
b438841
Implement retries (#3132)
mgravell Jul 17, 2026
d91efa1
CI fixes
mgravell Jul 17, 2026
6e7511d
avoid timing glitch in CircuitBreakerTrip_ReroutesAwayFromMember
mgravell Jul 17, 2026
7441909
version 3.1
mgravell Jul 17, 2026
f209897
Marc/aa2 retry tran (#3139)
mgravell Jul 28, 2026
eed811a
observe transaction faults
mgravell Jul 28, 2026
d86ef4b
more transaction tests
mgravell Jul 28, 2026
ae43dc5
Merge branch 'main' into marc/aa2
mgravell Jul 29, 2026
cd2cd52
use [AutoDatabase] for multigroupdatabase
mgravell Jul 29, 2026
b28ba2e
improve key/channel mapping machinery
mgravell Jul 29, 2026
95fc8ea
fix name break
mgravell Jul 29, 2026
214dd2e
Merge remote-tracking branch 'origin/main' into marc/aa2
mgravell Jul 29, 2026
b0413eb
make AA configuration API consistent (#3141)
mgravell Jul 29, 2026
5a333e6
retry hardening (#3144)
mgravell Jul 30, 2026
a8f87a1
Merge remote-tracking branch 'origin/main' into marc/aa2
mgravell Jul 30, 2026
95fe886
feature naming
mgravell Jul 30, 2026
083c4d9
we want GA to be 3.1.0
mgravell Jul 30, 2026
445ba5d
more naming
mgravell Jul 30, 2026
a98e1f8
prefer Redis naming of Active-Active
mgravell Jul 30, 2026
55f6f01
- rejigger the declaration order of CommandFlags to make ToString() h…
mgravell Jul 31, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions A.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
public interface IArgs { void Map(); }
public struct S : IArgs { public int Arg0; public long Arg1; public void Map() { } }
public interface IInner { int Do(int a, long b); }

// candidate delegate: like Func<TState,TIn,TResult> but with 'in' on the state
public delegate TResult ArgsFunc<TState, TIn, TResult>(in TState state, TIn inner) where TState : struct, IArgs;

public class C
{
private TResult Execute<TState, TResult>(in TState state, ArgsFunc<TState, IInner, TResult> op)
where TState : struct, IArgs => op(in state, null!);

// TEST 1: fully implicit lambda (what the generator emits today)
public int Implicit() => Execute(new S(), static (state, inner) => inner.Do(state.Arg0, state.Arg1));
}
2 changes: 1 addition & 1 deletion Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
<CodeAnalysisRuleset>$(MSBuildThisFileDirectory)Shared.ruleset</CodeAnalysisRuleset>
<MSBuildWarningsAsMessages>NETSDK1069</MSBuildWarningsAsMessages>
<!-- SER002/SER003/SER006 retired (Redis 8.4/8.6/8.8 features no longer experimental); IDs reserved, see Experiments.cs -->
<NoWarn>$(NoWarn);NU5105;NU1507;SER001;SER004;SER005;SER008</NoWarn>
<NoWarn>$(NoWarn);NU5105;NU1507;SER001;SER004;SER005;SER007;SER008</NoWarn>
<PackageReleaseNotes>https://stackexchange.github.io/StackExchange.Redis/ReleaseNotes</PackageReleaseNotes>
<PackageProjectUrl>https://stackexchange.github.io/StackExchange.Redis/</PackageProjectUrl>
<PackageLicenseExpression>MIT</PackageLicenseExpression>
Expand Down
2 changes: 1 addition & 1 deletion Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
<!-- Packages only used in the solution, upgrade at will -->
<PackageVersion Include="BenchmarkDotNet" Version="0.15.8" />
<PackageVersion Include="GitHubActionsTestLogger" Version="3.0.2" />
<PackageVersion Include="Microsoft.CodeAnalysis.PublicApiAnalyzers" Version="4.14.0" />
<PackageVersion Include="Microsoft.CodeAnalysis.PublicApiAnalyzers" Version="5.6.0" />
<PackageVersion Include="Microsoft.NETFramework.ReferenceAssemblies" Version="1.0.3" />
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="18.3.0" />
<PackageVersion Include="Microsoft.SourceLink.GitHub" Version="10.0.201" />
Expand Down
14 changes: 14 additions & 0 deletions docs/Configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,20 @@ Additional code-only options:
- **Note: heartbeats are not free and that's why the default is 1 second. There is additional overhead to running this more often simply because it does some work each time it fires.**
- LibraryName - Default: `SE.Redis` (unless a `DefaultOptionsProvider` specifies otherwise)
- The library name to use with `CLIENT SETINFO` when setting the library name/version on the connection
- IncludeDetailInExceptions - Default: `true`
- Whether exceptions include identifiable details (key names, and additional `.Data` annotations)
- Defaults (`DefaultOptionsProvider`) - Default: resolved from the configured endpoints
- The provider that supplies default values for options that have not been set explicitly (for example, recognized cloud endpoints can apply tuned defaults)
- IncludePerformanceCountersInExceptions - Default: `false`
- Whether exceptions include performance counter details (CPU usage, etc); note that this can be problematic on some platforms
- RequestBufferPool (`MemoryPool<byte>`) - Default: `null`
- The buffer pool to use when buffering requests; when `null`, a shared default pool is used
- ResponseBufferPool (`MemoryPool<byte>`) - Default: `null`
- The buffer pool to use when buffering responses (and for allocating `Lease<byte>` results); when `null`, a shared default pool is used
- CircuitBreaker (`CircuitBreaker`) - Default: `null`
- **[Experimental](exp/SER007)** (client-side geographic failover). A per-connection circuit breaker that *passively* observes the outcome of normal traffic and tears the connection down when it becomes unstable. When the connection is a member of a connection group, this flows in from `MultiGroupOptions.CircuitBreaker` if not set explicitly. See [Client-side geographic failover](Failover)
- HealthCheck (`HealthCheck`) - Default: `null`
- **[Experimental](exp/SER007)** (client-side geographic failover). An *active* health check used when the connection is a member of a connection group; when `null`, the group-level `MultiGroupOptions.HealthCheck` is used. See [Client-side geographic failover](Failover)

Tokens in the configuration string are comma-separated; any without an `=` sign are assumed to be redis server endpoints. Endpoints without an explicit port will use 6379 if ssl is not enabled, and 6380 if ssl is enabled.
Tokens starting with `$` are taken to represent command maps, for example: `$config=cfg`.
Expand Down
Loading
Loading