perf(streaming): quiesce retired generations and budget teardown
Publish the retail blocking-for-cells edge before deferred recenter work, freeze old-world presentation/simulation/audio, and advance full-window retirement from exact metered entity and owner cursors. This removes synchronous portal teardown without allowing retained owners to remain observable.
This commit is contained in:
parent
b8f6317fe1
commit
bb16f74fd4
38 changed files with 1691 additions and 170 deletions
|
|
@ -543,7 +543,8 @@ public class StreamingControllerPriorityApplyTests
|
|||
|
||||
ctrl.ForceReloadWindow();
|
||||
loads.Clear();
|
||||
ctrl.Tick(11, 10); // overlap remains desired in the replacement window.
|
||||
for (int i = 0; i < 32 && !loads.Any(load => load.Id == overlap); i++)
|
||||
ctrl.Tick(11, 10);
|
||||
ulong newGeneration = loads.Single(load => load.Id == overlap).Generation;
|
||||
Assert.NotEqual(oldGeneration, newGeneration);
|
||||
|
||||
|
|
@ -551,7 +552,8 @@ public class StreamingControllerPriorityApplyTests
|
|||
outbox.Enqueue(LoadedOf(overlap, newGeneration));
|
||||
outbox.Enqueue(new LandblockStreamResult.Unloaded(overlap, oldGeneration));
|
||||
|
||||
ctrl.Tick(11, 10);
|
||||
for (int i = 0; i < 8 && applied.Count == 0; i++)
|
||||
ctrl.Tick(11, 10);
|
||||
|
||||
Assert.Equal(new[] { overlap }, applied);
|
||||
Assert.True(state.IsLoaded(overlap));
|
||||
|
|
@ -559,7 +561,7 @@ public class StreamingControllerPriorityApplyTests
|
|||
}
|
||||
|
||||
[Fact]
|
||||
public void HardRecenter_DropsStaleOutboxBeforeDeferredApplyBudget()
|
||||
public void HardRecenter_DropsStaleOutboxThroughBoundedAdmissionBeforeCurrentResult()
|
||||
{
|
||||
uint current = StreamingRegion.EncodeLandblockIdForTest(11, 10);
|
||||
var outbox = new Queue<LandblockStreamResult>();
|
||||
|
|
@ -584,7 +586,8 @@ public class StreamingControllerPriorityApplyTests
|
|||
ulong oldGeneration = loads[0].Generation;
|
||||
ctrl.ForceReloadWindow();
|
||||
loads.Clear();
|
||||
ctrl.Tick(11, 10);
|
||||
for (int i = 0; i < 32 && !loads.Any(load => load.Id == current); i++)
|
||||
ctrl.Tick(11, 10);
|
||||
ulong newGeneration = loads.Single(load => load.Id == current).Generation;
|
||||
|
||||
for (int i = 0; i < 12; i++)
|
||||
|
|
@ -593,7 +596,8 @@ public class StreamingControllerPriorityApplyTests
|
|||
oldGeneration));
|
||||
outbox.Enqueue(LoadedOf(current, newGeneration));
|
||||
|
||||
ctrl.Tick(11, 10);
|
||||
for (int i = 0; i < 32 && !applied.Contains(current); i++)
|
||||
ctrl.Tick(11, 10);
|
||||
|
||||
Assert.Equal(new[] { current }, applied);
|
||||
Assert.Equal(0, ctrl.DeferredApplyBacklog);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue