Add directory migration join regression#10049
Merged
ReubenBond merged 3 commits intoMay 8, 2026
Merged
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
Adds a targeted regression test to harden Orleans distributed grain directory resilience when a new silo joins and triggers range migration under concurrent directory activity.
Changes:
- Refactors directory partition integrity verification into a shared helper (
CheckIntegrityAsync). - Adds a new stress/regression test which runs concurrent directory load while starting an additional silo and repeatedly validating partition integrity.
- Minor formatting cleanup in existing chaos test.
Show a summary per file
| File | Description |
|---|---|
| test/Orleans.GrainDirectory.Tests/GrainDirectory/GrainDirectoryResilienceTests.cs | Adds a joining-silo migration regression test and centralizes partition integrity checks into a helper. |
Copilot's findings
- Files reviewed: 1/1 changed files
- Comments generated: 2
4a6cf08 to
0487ccd
Compare
1dc35ac to
4f710e1
Compare
0487ccd to
cbfd741
Compare
4f710e1 to
2d210eb
Compare
cbfd741 to
506f93b
Compare
2d210eb to
84d2be4
Compare
506f93b to
4f0f87c
Compare
84d2be4 to
7f1c458
Compare
4f0f87c to
102471c
Compare
This was referenced Apr 29, 2026
e3e89a1 to
0a5f4a4
Compare
5eb01d6 to
850cdf9
Compare
Member
Author
|
Rebuilt on top of the updated #10050 head. |
850cdf9 to
90b82bd
Compare
This was referenced Apr 29, 2026
90b82bd to
15b23ac
Compare
Cover joining-silo range transfer with concurrent load and partition integrity checks for the distributed grain directory. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
15b23ac to
ee243b7
Compare
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Contributor
There was a problem hiding this comment.
Copilot's findings
Comments suppressed due to low confidence (1)
test/Orleans.GrainDirectory.Tests/GrainDirectory/GrainDirectoryResilienceTests.cs:298
- Same issue as above:
currentRange.Difference(previousRange)can return more than one segment.SingleOrDefault()will throw if the added portion splits into multiple ranges. Iterate over the fullDifference(...)result set and create an expected "acquire" operation per segment.
var addedRange = currentRange.Difference(previousRange).SingleOrDefault();
if (!addedRange.IsEmpty)
{
- Files reviewed: 3/3 changed files
- Comments generated: 1
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds a regression test for a local-to-distributed directory migration join case where a joining silo must not leave stale directory entries on the previous owner.
Changes
JoiningSilo_DoesNotLeaveStaleEntriesOnPreviousOwnercoverage.ElasticChaosstress test separate from the deterministic migration regression.Stack notes
This branch is stacked above #10053. The focused review range is:
fix/directory-transfer-payload-batching..fix/directory-migration-regression-testValidation
Focused validation run locally:
dotnet test test\Orleans.GrainDirectory.Tests\Orleans.GrainDirectory.Tests.csproj --framework net10.0 --filter "FullyQualifiedName~GrainDirectoryRollingUpgradeTests|FullyQualifiedName~GrainDirectoryPartitionBatchingTests|FullyQualifiedName~GrainDirectoryResilienceTests.JoiningSilo_DoesNotLeaveStaleEntriesOnPreviousOwner" -- -parallel none -noshadowGrainDirectoryResilienceTests.ElasticChaoswas also attempted in a broader run and timed out; the deterministic non-chaos coverage above passed.