mirror of
https://github.com/MCCTeam/Minecraft-Console-Client
synced 2026-08-15 13:04:36 +00:00
Fix restart publication races (#3186)
Prepare offline routing before restart requests become observable, reject stale route owners, and wait for source-client cleanup before executing automatic retries. Add deterministic publication-order, cleanup-gate, and stale-route regression tests.
This commit is contained in:
parent
456a548cbc
commit
5655e3fc89
7 changed files with 164 additions and 25 deletions
|
|
@ -55,8 +55,8 @@ public sealed class McClientConnectionFailureTests
|
|||
int activations = 0;
|
||||
int deactivations = 0;
|
||||
|
||||
Assert.True(route.TryActivate(7, () => activations++));
|
||||
Assert.False(route.TryActivate(7, () => activations++));
|
||||
Assert.True(route.TryActivate(7, 7, () => activations++));
|
||||
Assert.False(route.TryActivate(7, 7, () => activations++));
|
||||
Assert.True(route.TryTransfer(7, 8));
|
||||
Assert.False(route.TryDeactivate(7, () => deactivations++));
|
||||
Assert.Equal(8, route.OwnerAttempt);
|
||||
|
|
@ -73,20 +73,32 @@ public sealed class McClientConnectionFailureTests
|
|||
var route = new AttemptOwnedRoute();
|
||||
int activations = 0;
|
||||
|
||||
Assert.True(route.TryActivate(0, () => activations++));
|
||||
Assert.True(route.TryActivate(0, 0, () => activations++));
|
||||
|
||||
Assert.Equal(1, activations);
|
||||
Assert.Equal(0, route.OwnerAttempt);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void OlderAttemptCannotTakeAnEmptyOfflineRoute()
|
||||
{
|
||||
var route = new AttemptOwnedRoute();
|
||||
int activations = 0;
|
||||
|
||||
Assert.False(route.TryActivate(4, 5, () => activations++));
|
||||
|
||||
Assert.Equal(0, activations);
|
||||
Assert.Equal(-1, route.OwnerAttempt);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void StaleCleanupCannotClearNewerOfflineRoute()
|
||||
{
|
||||
var route = new AttemptOwnedRoute();
|
||||
int deactivations = 0;
|
||||
|
||||
Assert.True(route.TryActivate(10, () => { }));
|
||||
Assert.True(route.TryActivate(11, () => { }));
|
||||
Assert.True(route.TryActivate(10, 10, () => { }));
|
||||
Assert.True(route.TryActivate(11, 11, () => { }));
|
||||
Assert.False(route.TryDeactivate(10, () => deactivations++));
|
||||
|
||||
Assert.Equal(11, route.OwnerAttempt);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue