fix: prevent database circuit failure storm

This commit is contained in:
2026-09-02 20:41:51 +08:00
parent 60d1930447
commit c056a3e741
5 changed files with 43 additions and 9 deletions
@@ -59,6 +59,23 @@ public sealed class DatabaseCircuitBreakerTests
Assert.Equal(0, DatabaseCircuitBreaker.ConsecutiveFailures);
}
[Fact]
public void RecordFailure_while_circuit_is_open_does_not_grow_failure_counter()
{
for (var i = 0; i < FailureThreshold; i++)
{
DatabaseCircuitBreaker.RecordFailure();
}
Assert.True(DatabaseCircuitBreaker.IsOpen);
var failures = DatabaseCircuitBreaker.ConsecutiveFailures;
DatabaseCircuitBreaker.RecordFailure();
DatabaseCircuitBreaker.RecordFailure(new DatabaseCircuitOpenException("already open"));
Assert.Equal(failures, DatabaseCircuitBreaker.ConsecutiveFailures);
}
[Fact]
public void IsOpen_after_break_duration_transitions_to_half_open()
{