Skip to content

Commit 1ee0e9f

Browse files
committed
One more scenario that used to fail: double pause.
1 parent f8b1eb5 commit 1ee0e9f

File tree

1 file changed

+23
-1
lines changed

1 file changed

+23
-1
lines changed

src/Components/Server/test/Circuits/CircuitRegistryTest.cs

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -712,6 +712,28 @@ public async Task PauseAfterTermination_DoesNotThrow()
712712
await registry.PauseAndDisposeCircuitHost(circuitHost, saveStateToClient: true);
713713
}
714714

715+
[Fact]
716+
public async Task MultiplePause_DoesNotThrow()
717+
{
718+
var circuitIdFactory = TestCircuitIdFactory.CreateTestFactory();
719+
var options = new CircuitOptions();
720+
721+
var circuitHost = new TestCircuitHostForRaceConditions(
722+
circuitIdFactory.CreateCircuitId(),
723+
CreateServiceScope(),
724+
options);
725+
726+
var persistenceProvider = new TestCircuitPersistenceProvider();
727+
var registry = new TestCircuitRegistry(circuitIdFactory, options, persistenceProvider);
728+
registry.Register(circuitHost);
729+
730+
// First pause should be successful
731+
await registry.PauseAndDisposeCircuitHost(circuitHost, saveStateToClient: true);
732+
733+
// Second pause - it will try to resolve services from the DI scope that is already disposed
734+
await registry.PauseAndDisposeCircuitHost(circuitHost, saveStateToClient: true);
735+
}
736+
715737
[Fact]
716738
public async Task PauseAfterEviction_DoesNotThrow()
717739
{
@@ -749,7 +771,7 @@ public async Task EvictionAndTermination_DoesNotThrow()
749771
var registry = new TestCircuitRegistry(circuitIdFactory, options, persistenceProvider);
750772
registry.Register(circuitHost);
751773

752-
// Simulate race condition: eviction and termination happening concurrently
774+
// We never observed any issues with eviction and termination
753775
await registry.SimulateEvictionAndDispose(circuitHost);
754776
await registry.TerminateAsync(circuitHost.CircuitId);
755777
}

0 commit comments

Comments
 (0)