Skip to content

feat(membership): detect local stalls during direct probes - #9979

Merged
ReubenBond merged 12 commits into
dotnet:mainfrom
ReubenBond:feature/detect-local-gc-pauses-during-probe
Aug 23, 2026
Merged

ReubenBond merged 12 commits into
dotnet:mainfrom
ReubenBond:feature/detect-local-gc-pauses-during-probe

Conversation

@ReubenBond

@ReubenBond ReubenBond commented Mar 31, 2026 •

Copy link
Copy Markdown
Member

If there is a long GC pause during an inter-silo probe that subsequently times out, suppress the fault. Currently set to 25% of the window (so, a >= 1.25s GC pause will result in ignoring the failed probe by default)

Microsoft Reviewers: Open in CodeFlow

@ReubenBond ReubenBond changed the title [Membership] Detect local GC pauses during direct probes feat(membership): detect local GC pauses during direct probes May 29, 2026
Copilot AI lite review requested due to automatic review settings August 16, 2026 09:27
@ReubenBond
ReubenBond force-pushed the feature/detect-local-gc-pauses-during-probe branch from fa58798 to 1dba949 Compare August 16, 2026 09:27

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This PR updates Orleans runtime membership probing to detect significant local GC pauses during direct inter-silo probes and to treat certain probe timeouts as inconclusive, reducing false fault detection when the local silo is unable to process a reply in time.

Changes:

  • Passes the effective probe timeout into direct probing so it can be used for local GC-pause evaluation.
  • Tracks GC.GetTotalPauseDuration() across a direct probe and returns ProbeResultStatus.Unknown when GC pause time exceeds 25% of the probe timeout.
  • Adds a new warning log for probe failures treated as inconclusive due to detected GC pause.
Show a summary per file
File Description
src/Orleans.Runtime/MembershipService/SiloHealthMonitor.cs Adds GC-pause-aware handling for direct probe failures/timeouts and corresponding logging.

Review details

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

  • Files reviewed: 1/1 changed files
  • Comments generated: 3
  • Review effort level: Lite

Comment thread src/Orleans.Runtime/MembershipService/SiloHealthMonitor.cs Outdated
Comment thread src/Orleans.Runtime/MembershipService/SiloHealthMonitor.cs Outdated
Comment thread src/Orleans.Runtime/MembershipService/SiloHealthMonitor.cs Outdated
Copilot AI review requested due to automatic review settings August 16, 2026 09:58

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Review details

  • Files reviewed: 2/2 changed files
  • Comments generated: 1
  • Review effort level: Lite

Comment thread src/Orleans.Runtime/MembershipService/SiloHealthMonitor.cs Outdated
Copilot AI review requested due to automatic review settings August 16, 2026 10:05

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Review details

  • Files reviewed: 2/2 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

Copilot AI review requested due to automatic review settings August 21, 2026 19:22
@ReubenBond
ReubenBond force-pushed the feature/detect-local-gc-pauses-during-probe branch from c99e0c4 to bc85280 Compare August 21, 2026 19:22

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Review details

  • Files reviewed: 2/2 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

Copilot AI review requested due to automatic review settings August 21, 2026 19:57

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Review details

Suppressed comments (1)

Previously missed (1) — in code that hasn't changed since the last review.

src/Orleans.Runtime/MembershipService/SiloHealthMonitor.cs:375

  • When a direct probe times out during a detected local GC pause, the failure is treated as inconclusive, but MessagingInstruments.OnPingReplyMissed(...) is not invoked. That means PingReplyMissedCounter will under-report missed replies for these timeouts, while other failure/unknown paths (including indirect probes) still record a missed reply. Consider recording the missed reply before the GC-pause suppression check so metrics remain consistent.
                // Check if a GC pause consumed a significant portion of the probe timeout.
                // If so, the local silo may have been unable to process the response in time,
                // so we treat this as an inconclusive result rather than a failure.
                var gcPauseDuring = _localSiloHealthMonitor.TotalGarbageCollectionPauseDuration - gcPauseBefore;
                if (probeTimedOut && gcPauseDuring >= probeTimeout.Multiply(0.25))
  • Files reviewed: 3/3 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

Copilot AI review requested due to automatic review settings August 21, 2026 20:20

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Review details

  • Files reviewed: 3/3 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

Copilot AI review requested due to automatic review settings August 21, 2026 21:59
@github-actions github-actions Bot locked and limited conversation to collaborators Sep 22, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants