@@ -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