Skip to content

docs: one silo departure on memex-cloud, read correctly (Polly final attempt, DeliverMessage re-send vs drop) - #5450

Merged
meshweaver-cloud[bot] merged 2 commits into
mainfrom
docs/orleans-departure-5336
Sep 23, 2026
Merged

meshweaver-cloud[bot] merged 2 commits into
mainfrom
docs/orleans-departure-5336

Conversation

@rbuergi

@rbuergi rbuergi commented Sep 23, 2026

Copy link
Copy Markdown
Contributor

Docs only. This adds a section to Doc/Architecture/PeerDeathIsDatedByItsExceptionClass: a second measured case, from 2026-09-22 on memex-cloud.

  • One departure became seven issues. Silo S10.244.9.90:11111:149090968 went away at 14:41Z. The survivors logged it at three sites (Polly[3], and Orleans.Messaging[100071] as either a connect failure or a placement timeout), and each site's lines were filed separately. The section gives the timeline, which the silo generations date.
  • fail: Polly[3] … Handled: 'True', Attempt: '3' is the final attempt. Polly logs a handled final attempt at Error (TelemetryUtil.ReportFinalExecutionAttempt), and PlacementMaxRetries = 3. So this line means Orleans' own placement retries ran out and the message was rejected. It does not mean the retry absorbed the fault, which is how three of the issues read it.
  • What MeshWeaver does next. RoutingGrain re-sends a connection-failed rejection 6 times (about 10 s), and when those run out it classifies the failure as ShuttingDown. It never re-sends a placement TimeoutException, because IsResponseTimeout matches every TimeoutException. Its documented premise ("the callee already holds the request") is false for a placement timeout. The doc records that as an open design question and does not change it.
  • What is not established: whether the silo left gracefully or crashed. The doc names the one Logs read that settles it.

Refs #5336 · Refs #5333 · Refs #5334 · Refs #5338 · Refs #5340 · Refs #5342 · Refs #5343 · Refs #5300

Local: dotnet build -c Release -warnaserror src/MeshWeaver.Documentation gives 0 Warning(s), 0 Error(s). The change adds no internal links.

🤖 Generated with Claude Code

… final-attempt Error correctly

One departed silo (S10.244.9.90:11111:149090968) was filed as seven issues across three
log sites. Records the timeline, that 'fail: Polly[3] Handled: True Attempt: 3' is the
FINAL placement attempt (retries exhausted, not absorbed), where RoutingGrain re-sends a
rejected DeliverMessage vs drops a placement timeout, and the one read that settles
graceful-vs-crash.

Refs #5336

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

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.

Copilot review overview

🟡 Changes recommended

Four documentation nits remain regarding evidence wording, timestamps, classification flow, and placement-timeout correlation.

Get a fresh assessment by requesting another Copilot review.

Review effort: Lite
Findings: 1 Low severity

Open (1)
What changed in this PR

Docs-only PR adding a second measured memex-cloud silo-departure case, including retry semantics and delivery behavior.

Changes:

  • Adds the 2026-09-22 incident timeline and issue correlations.
  • Clarifies Polly’s final-attempt semantics.
  • Documents resend behavior and unresolved shutdown classification.
File Summary
src/​MeshWeaver.Documentation/​Data/​Architecture/​PeerDeathIsDatedByItsExceptionClass.md Adds the incident analysis and operational guidance; four nit findings remain.

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

| ≤ 14:41:00 | Directory lookups into 9.90's partition start hanging | inferred: the first placement timeouts expire at 14:41:30 against a 30 s budget |
| 14:41:30 | First `TimeoutException: Grain placement operation timed out` on xg22d (`messagehub/Doc/Architecture/PolicyNotProse`). Its innermost frame is `PlacementService.cs:602`, which is the `_grainLocator.Lookup(...)` await: the **directory lookup**, not local placement | measured (#5334) |
| 14:41:30 | First `ConnectionFailedException: Unable to connect to S10.244.9.90:11111:149090968, will retry after …` on 8pdzb, raised from `LocalGrainDirectory.LookupAsync` | measured (#5333, #5336) |
| 14:41:41 | First `SocketConnectionException … Error: HostUnreachable`: the IP itself stopped answering | measured (#5338, #5342) |

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Agreed, and fixed in 1051351. The 14:41:41 row now reads HostUnreachable as a caller-side reachability loss that is not by itself proof the pod is gone. The paragraph after the table is also reworded: the survivors never reached the address again and no new generation appeared there. That is consistent with a deleted pod, while a broken route or a network policy produces the same socket error (the caveat at the top of the page). So it does not prove deletion. The "What is NOT established" section already leaves graceful stop vs. crash open.

@github-actions

github-actions Bot commented Sep 23, 2026 •

Copy link
Copy Markdown
Contributor

Test Results (shard 4)

0 files   -     3  0 suites   - 3   0s ⏱️ - 6m 18s
0 tests  - 1 988  0 ✅  - 1 988  0 💤 ±0  0 ❌ ±0 
0 runs   - 1 989  0 ✅  - 1 989  0 💤 ±0  0 ❌ ±0 

Results for commit 1051351. ± Comparison against base commit 39f4949.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Sep 23, 2026 •

Copy link
Copy Markdown
Contributor

Test Results (shard 5)

0 files   -     5  0 suites   - 5   0s ⏱️ - 14m 52s
0 tests  - 3 992  0 ✅  - 3 990  0 💤  - 2  0 ❌ ±0 
0 runs   - 3 996  0 ✅  - 3 994  0 💤  - 2  0 ❌ ±0 

Results for commit 1051351. ± Comparison against base commit 39f4949.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Sep 23, 2026 •

Copy link
Copy Markdown
Contributor

Test Results (shard 3)

0 tests   - 443   0 ✅  - 443   0s ⏱️ -54s
0 suites  -   3   0 💤 ±  0 
0 files    -   3   0 ❌ ±  0 

Results for commit 1051351. ± Comparison against base commit 39f4949.

♻️ This comment has been updated with latest results.

…he pod is gone (review)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@github-actions

github-actions Bot commented Sep 23, 2026 •

Copy link
Copy Markdown
Contributor

Test Results (shard 2)

624 tests   - 107   624 ✅ + 85   27s ⏱️ - 6m 38s
  1 suites  -   2     0 💤  - 192 
  1 files    -   2     0 ❌ ±  0 

Results for commit 1051351. ± Comparison against base commit 39f4949.

♻️ This comment has been updated with latest results.

@github-actions

Copy link
Copy Markdown
Contributor

Test Results (shard 1)

0 tests   - 1 623   0 ✅  - 1 623   0s ⏱️ - 3m 29s
0 suites  -     2   0 💤 ±    0 
0 files    -     2   0 ❌ ±    0 

Results for commit 1051351. ± Comparison against base commit 39f4949.

@github-actions

Copy link
Copy Markdown
Contributor

Test Results (shard 0)

  1 files  ±0    1 suites  ±0   2m 35s ⏱️ -17s
326 tests ±0  326 ✅ ±0  0 💤 ±0  0 ❌ ±0 
330 runs  ±0  330 ✅ ±0  0 💤 ±0  0 ❌ ±0 

Results for commit 1051351. ± Comparison against base commit 39f4949.

@github-actions

Copy link
Copy Markdown
Contributor

Test Results

  2 files   -    15    2 suites   - 15   3m 2s ⏱️ - 32m 30s
950 tests  - 8 153  950 ✅  - 7 959  0 💤  - 194  0 ❌ ±0 
954 runs   - 8 158  954 ✅  - 7 964  0 💤  - 194  0 ❌ ±0 

Results for commit 1051351. ± Comparison against base commit 39f4949.

@meshweaver-cloud
meshweaver-cloud Bot added this pull request to the merge queue Sep 23, 2026
Merged via the queue into main with commit ba86b01 Sep 23, 2026
40 checks passed
@rbuergi
rbuergi deleted the docs/orleans-departure-5336 branch October 10, 2026 13:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants