Skip to content

DOC-7185 Document StackExchange.Redis failback health checks and lag-aware check - #4265

Open
andy-stark-redis wants to merge 1 commit into
mainfrom
DOC-7185-dotnet-lag-aware-failback
Open

andy-stark-redis wants to merge 1 commit into
mainfrom
DOC-7185-dotnet-lag-aware-failback

Conversation

@andy-stark-redis

@andy-stark-redis andy-stark-redis commented Oct 14, 2026 •

Copy link
Copy Markdown
Contributor

Adds failback health checks to the StackExchange.Redis geographic failover page. They shipped in v3.4.5 (StackExchange/StackExchange.Redis#3242).

  • Failback health checks (MultiGroupOptions.FailbackHealthCheck / ConnectionGroupMember.FailbackHealthCheck): a check that an inactive member must pass before it can become active. It never marks a member unhealthy or moves traffic away from the active member. If no member passes, the group falls back to a live member and marks it provisional.
  • Lag-aware failback check (Redis Software only) (HealthCheck.LagAware(LagAwareOptions)): uses the database availability API to hold back failback to an Active-Active region that hasn't caught up. Includes a LagAwareOptions property table and certificate notes.
  • A FailbackHealthCheck row in the member property table, and one sentence on the existing tiebreak that keeps the active member.

Names, defaults and behavior come from the 3.4.5 source (public API files, XML docs and selection code), not from the PR description.

For reviewers:

  • The C# snippet isn't compiled, because NuGet restore isn't available in my environment.
  • The "about a minute" window where the lag check can't yet detect a broken link between regions comes from upstream's measurement on Redis Software 8.0. I'd welcome confirmation from someone who knows the availability API.

Jira: DOC-7185

🤖 Generated with Claude Code


Note

Low Risk
Documentation-only updates to the StackExchange.Redis failover guide; no product or runtime behavior changes in this repo.

Overview
Documents StackExchange.Redis v3.4.5 failback controls on the .NET geographic failover page.

Adds FailbackHealthCheck to the member property table and a new Failback health checks section: how it differs from the main health check (eligibility only, provisional fallback when no member passes, TryFailoverTo() override), plus a one-line note that equal candidates keep the already active member.

Adds Lag-aware failback check (Redis Software) for HealthCheck.LagAware() / LagAwareOptions (credentials, REST endpoint, lag modes, TLS), a configuration example, and guidance to pair with FailbackDelay ≥ 1 minute because the availability API can lag behind split-brain.

Reviewed by Cursor Bugbot for commit 754c094. Bugbot is set up for automated code reviews on this repo. Configure here.

…aware check

Adds failback health checks (v3.4.5, StackExchange.#3242) to the .NET
geographic failover page, as two H4 subsections under Failback
configuration. MultiGroupOptions.FailbackHealthCheck and
ConnectionGroupMember.FailbackHealthCheck decide only whether an inactive
member is eligible to become active. They never mark a member unhealthy.
HealthCheck.LagAware(LagAwareOptions) is the built-in Redis Software
Active-Active check against the database availability API. The page adds
a LagAwareOptions property table, a FailbackHealthCheck row in the
member property table, and one sentence on the existing anti-flap
tiebreak.

Every name, default and behavior was read from the 3.4.5 source, not the
PR description. That covers the PublicAPI.Unshipped.txt entries, the XML
docs in LagAwareOptions.cs and HealthCheck.LagAware.cs, and the
MultiGroupMultiplexer selection code (IsFailbackEligible, _provisional).
The 3.4.5 tag is #3242's own merge commit. Upstream docs/Failover.md
compares SE.Redis with "other clients" (a 5000 ms default tolerance, never
selecting a lagging member). That comparison was left out: it describes
other libraries, unverified, and our per-client pages document their own
defaults. SetUserPemCertificate() is net6.0-only (#if NET), so the page
qualifies it. db_viewer is named as a management role, matching the
Redis Software REST API docs.

Learned: SE.Redis LagAware is a failback eligibility check, not a liveness check; it never fails over the active member
Constraint: failback checks never mark members unhealthy or remove the active member; keep the page from implying they trigger failover
Gaps: C# snippet not compiled (NuGet is sandbox-denied); the ~1 minute lag-blind window is upstream's Redis Software 8.0 measurement, not verified here
Gaps: no full Hugo build (PostCSS/npm blocked in the worktree); new links and anchors checked by script
Ticket: DOC-7185
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Oct 14, 2026 •

Copy link
Copy Markdown
Contributor

DOC-7185

@github-actions

Copy link
Copy Markdown
Contributor

@github-actions

Copy link
Copy Markdown
Contributor

🧠 Redis Memory

Found 5 related items from repository history (5 new this commit):

Memory updated at 754c094

@andy-stark-redis andy-stark-redis self-assigned this Oct 14, 2026
@andy-stark-redis andy-stark-redis added the clients Client library docs label Oct 14, 2026
@andy-stark-redis
andy-stark-redis requested a review from a team October 14, 2026 13:27

@dwdougherty dwdougherty left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

clients Client library docs

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants