/// <summary> /// Constructor /// </summary> /// <param name="config">The configuration for the source breaker</param> /// <param name="reason">The reason why the breaker tried to open</param> /// <param name="exception">The source exception</param> /// <param name="toleratedOpenEventCount">How many open events have been tolerated</param> public ToleratedOpenCircuitBreakerEventArgs(CircuitBreakerConfig config, BreakerOpenReason reason, Exception exception, short toleratedOpenEventCount) : base(config) { Reason = reason; Exception = exception; ToleratedOpenEventCount = toleratedOpenEventCount; }
private void OnOpenBreaker(BreakerOpenReason reason, Exception thrownException) { if (OpenedCircuitBreaker != null) { OpenedCircuitBreaker(this, new OpenedCircuitBreakerEventArgs(_config, reason, thrownException)); } }
private void OnToleratedOpenBreaker(int toleratedOpenEventCount, BreakerOpenReason reason, Exception thrownException) { if (ToleratedOpenCircuitBreaker != null) { ToleratedOpenCircuitBreaker(this, new ToleratedOpenCircuitBreakerEventArgs(_config, reason, thrownException, toleratedOpenEventCount)); } }
private void OpenBreaker(BreakerOpenReason reason, Exception thrownException = null) { if (State != BreakerState.Open) { if (State == BreakerState.HalfOpen) { SafeIncrementOpenPeriodIndex(); } if (CanResetToleratedEventCount) { _toleratedOpenEventCount = 0; _firstToleratedEventTime = DateTime.MinValue; } if (State == BreakerState.HalfOpen || _toleratedOpenEventCount >= _config.OpenEventTolerance) { State = BreakerState.Open; _openedTime = DateTime.UtcNow; OnOpenBreaker(reason, thrownException); _toleratedOpenEventCount = 0; } else { OnToleratedOpenBreaker(_toleratedOpenEventCount++, reason, thrownException); if (_toleratedOpenEventCount == 1) { _firstToleratedEventTime = DateTime.UtcNow; }; } } }
public void RaiseEvent(ICircuitBreakerDefinition breakerDefinition, BreakerOpenReason reason, Exception thrownException) { _connection.AppendToStreamAsync(StreamFormatter.GetStreamWithCategory("OpenedEvent", breakerDefinition.BreakerId), ExpectedVersion.Any, _credentials, breakerDefinition.AsJson()); }
/// <summary> /// Constructor /// </summary> /// <param name="config">Configuration for the source breaker</param> /// <param name="reason">The reason for opening</param> /// <param name="exception">The original exception</param> public OpenedCircuitBreakerEventArgs(CircuitBreakerConfig config, BreakerOpenReason reason, Exception exception) : base(config) { this.Reason = reason; Exception = exception; }