Skip to content

Commit bb5fcc9

Browse files
pracuccibboreham
andauthored
Turn memcached circuit-breaker on by default (#3189) (#3190)
* Turn memcached circuit-breaker on by default Will trip after 10 failures within 10 seconds Signed-off-by: Bryan Boreham <[email protected]> * Change circuit-breaker log fields to avoid clash The names 'from' and 'to' are used elsewhere as dates, so avoid re-using them here as strings Signed-off-by: Bryan Boreham <[email protected]> * Update CHANGELOG Signed-off-by: Bryan Boreham <[email protected]> * Updated doc Signed-off-by: Marco Pracucci <[email protected]> Co-authored-by: Marco Pracucci <[email protected]> Co-authored-by: Bryan Boreham <[email protected]>
1 parent 03f2c42 commit bb5fcc9

File tree

3 files changed

+4
-4
lines changed

3 files changed

+4
-4
lines changed

CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@
5050
* [ENHANCEMENT] Add "integration" as a label for `cortex_alertmanager_notifications_total` and `cortex_alertmanager_notifications_failed_total` metrics. #3056
5151
* [ENHANCEMENT] Add `cortex_ruler_config_last_reload_successful` and `cortex_ruler_config_last_reload_successful_seconds` to check status of users rule manager. #3056
5252
* [ENHANCEMENT] The configuration validation now fails if an empty YAML node has been set for a root YAML config property. #3080
53-
* [ENHANCEMENT] Memcached dial() calls now have an optional circuit-breaker to avoid hammering a broken cache #3051
53+
* [ENHANCEMENT] Memcached dial() calls now have a circuit-breaker to avoid hammering a broken cache. #3051, #3189
5454
* [ENHANCEMENT] `-ruler.evaluation-delay-duration` is now overridable as a per-tenant limit, `ruler_evaluation_delay_duration`. #3098
5555
* [ENHANCEMENT] Add TLS support to etcd client. #3102
5656
* [ENHANCEMENT] When a tenant accesses the Alertmanager UI or its API, if we have valid `-alertmanager.configs.fallback` we'll use that to start the manager and avoid failing the request. #3073

docs/configuration/config-file-reference.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2968,7 +2968,7 @@ The `memcached_client_config` configures the client used to connect to Memcached
29682968
# Trip circuit-breaker after this number of consecutive dial failures (if zero
29692969
# then circuit-breaker is disabled).
29702970
# CLI flag: -<prefix>.memcached.circuit-breaker-consecutive-failures
2971-
[circuit_breaker_consecutive_failures: <int> | default = 0]
2971+
[circuit_breaker_consecutive_failures: <int> | default = 10]
29722972
29732973
# Duration circuit-breaker remains open after tripping (if zero then 60 seconds
29742974
# is used).

pkg/chunk/cache/memcached_client.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ func (cfg *MemcachedClientConfig) RegisterFlagsWithPrefix(prefix, description st
8383
f.DurationVar(&cfg.Timeout, prefix+"memcached.timeout", 100*time.Millisecond, description+"Maximum time to wait before giving up on memcached requests.")
8484
f.DurationVar(&cfg.UpdateInterval, prefix+"memcached.update-interval", 1*time.Minute, description+"Period with which to poll DNS for memcache servers.")
8585
f.BoolVar(&cfg.ConsistentHash, prefix+"memcached.consistent-hash", true, description+"Use consistent hashing to distribute to memcache servers.")
86-
f.UintVar(&cfg.CBFailures, prefix+"memcached.circuit-breaker-consecutive-failures", 0, description+"Trip circuit-breaker after this number of consecutive dial failures (if zero then circuit-breaker is disabled).")
86+
f.UintVar(&cfg.CBFailures, prefix+"memcached.circuit-breaker-consecutive-failures", 10, description+"Trip circuit-breaker after this number of consecutive dial failures (if zero then circuit-breaker is disabled).")
8787
f.DurationVar(&cfg.CBTimeout, prefix+"memcached.circuit-breaker-timeout", 10*time.Second, description+"Duration circuit-breaker remains open after tripping (if zero then 60 seconds is used).")
8888
f.DurationVar(&cfg.CBInterval, prefix+"memcached.circuit-breaker-interval", 10*time.Second, description+"Reset circuit-breaker counts after this long (if zero then never reset).")
8989
}
@@ -147,7 +147,7 @@ func NewMemcachedClient(cfg MemcachedClientConfig, name string, r prometheus.Reg
147147
}
148148

149149
func (c *memcachedClient) circuitBreakerStateChange(name string, from gobreaker.State, to gobreaker.State) {
150-
level.Info(c.logger).Log("msg", "circuit-breaker state change", "name", name, "from", from, "to", to)
150+
level.Info(c.logger).Log("msg", "circuit-breaker state change", "name", name, "from-state", from, "to-state", to)
151151
}
152152

153153
func (c *memcachedClient) dialViaCircuitBreaker(network, address string, timeout time.Duration) (net.Conn, error) {

0 commit comments

Comments
 (0)