44
func NewTwoStepCircuitBreakerWithDynamicSettings(
45
settings Settings,
47
>
return &TwoStepCircuitBreakerWithDynamicSettings{
48
>
name: settings.Name,
49
>
readyToTrip: settings.ReadyToTrip,
50
>
onStateChange: settings.OnStateChange,
51
>
}
52
>
}
53
54
func (c *TwoStepCircuitBreakerWithDynamicSettings) UpdateSettings(
55
ds dynamicconfig.CircuitBreakerSettings,
57
>
c.cbLock.Lock()
58
>
defer c.cbLock.Unlock()
59
>
if c.cb.Load() != nil && ds == c.settings {
60
return // no change
61
}
63
>
c.cb.Store(gobreaker.NewTwoStepCircuitBreaker(gobreaker.Settings{
64
>
Name: c.name,
65
>
MaxRequests: uint32(ds.MaxRequests),
66
>
Interval: ds.Interval,
67
>
Timeout: ds.Timeout,
68
>
ReadyToTrip: c.readyToTrip,
69
>
OnStateChange: c.onStateChange,
70
>
}))
71
}
72