test(reminders): investigate join/leave identity selection failure
Failure
Orleans.Reminders.TestKit.Tests.ReminderServiceLifecycleConformanceTests.ReminderService_OneSiloJoinLeaveTransfersOwnership failed in the BVT Windows/net8.0 matrix on #11314.
- Run: https://github.com/dotnet/orleans/actions/runs/35373935320
- Job: https://github.com/dotnet/orleans/actions/runs/35373935320/job/105694104052
- Head:
3b4b2c732a4dc4ba01f11142cf90f49b16549c84 - Test duration: 1.293 seconds
Reminder conformance failure [provider=IdealizedReminderTable,
guarantee=ReminderService_OneSiloJoinLeaveTransfersOwnership,
operation=identity selection]
seed: '42'
clock: '2026-01-01T00:00:00.0000000+00:00'
activeSilos: 'S127.0.0.1:23130:148757820, S127.0.0.1:27251:148757822'
expected: a deterministic grain identity owned by S127.0.0.1:27251:148757822
observed: no owned identity in 65,535 deterministic candidatesThe failure originates in ReminderServiceLifecycleTestRunner.CreateGrainOwnedBy (src/Orleans.Reminders.TestKit/ReminderServiceLifecycleTestRunner.cs, line 712), called after JoinOneSiloAsync and WaitForTopologyReconciliationAsync in RunReminderService_OneSiloJoinLeaveTransfersOwnership (line 593). It occurs before registering the scenario's reminder.
Expected behavior
The join/leave scenario should select an identity owned by the joined silo after topology reconciliation. Investigate the joined silo's ring range and the deterministic candidate search at this boundary, and make the scenario reliable with diagnostic evidence for ownership selection failures.
Scope and prior-fix check
#11314 changes the Consul provider, its focused tests/docs, and a shared membership cleanup baseline. This failing scenario uses IdealizedReminderTable; no reminder lifecycle/ring files were modified. The native Consul suites passed on both net8.0 and net10.0 (78 tests each, zero failures/skips).
Searched for the exact test, CreateGrainOwnedBy, identity selection, 65,535, and no owned identity. No matching open issue/fix was found. Related closed #10934 concerns duplicate ownership/topology reconciliation in a different faulty-provider scenario. The ring-notification fix #11182 (cad1d5124f23e4fa28d6ea9b109a9bbb63a9159b) and topology-timeout fix #11017 (56087553e38ef7a1890ea5085958ba5c4dc7921a) are already ancestors of this head. No newer matching fix was found on current main.
The failure is being tracked separately rather than expanding the Consul PR.
Source: dotnet/orleans