Skip to content

Commit 89092bb

Browse files
Removing a specific config for list rules fanout timeout and introducing generic remote_timeout
Signed-off-by: Anand Rajagopal <[email protected]>
1 parent ba3c705 commit 89092bb

File tree

5 files changed

+29
-14
lines changed

5 files changed

+29
-14
lines changed

docs/configuration/config-file-reference.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4142,6 +4142,10 @@ ruler_client:
41424142
# CLI flag: -ruler.client.tls-insecure-skip-verify
41434143
[tls_insecure_skip_verify: <boolean> | default = false]
41444144
4145+
# Timeout for downstream rulers.
4146+
# CLI flag: -ruler.client.remote-timeout
4147+
[remote_timeout: <duration> | default = 2m]
4148+
41454149
# How frequently to evaluate rules
41464150
# CLI flag: -ruler.evaluation-interval
41474151
[evaluation_interval: <duration> | default = 1m]
@@ -4382,10 +4386,6 @@ ring:
43824386
# Enable high availability
43834387
# CLI flag: -ruler.enable-ha-evaluation
43844388
[enable_ha_evaluation: <boolean> | default = false]
4385-
4386-
# Timeout for fanout calls to other rulers
4387-
# CLI flag: -ruler.list-rules-fanout-timeout
4388-
[list_rules_fanout_timeout: <duration> | default = 2m]
43894389
```
43904390

43914391
### `ruler_storage_config`

integration/ruler_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1040,7 +1040,7 @@ func TestRulerHA(t *testing.T) {
10401040
"-ruler.ring.replication-factor": "2",
10411041
"-ruler.enable-ha-evaluation": "true",
10421042
"-ruler.poll-interval": "5s",
1043-
"-ruler.list-rules-fanout-timeout": "10ms",
1043+
"-ruler.client.remote-timeout": "10ms",
10441044
}
10451045

10461046
rulerFlags := mergeFlags(

pkg/ruler/ruler.go

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ import (
3737
util_api "github.com/cortexproject/cortex/pkg/util/api"
3838
"github.com/cortexproject/cortex/pkg/util/concurrency"
3939
"github.com/cortexproject/cortex/pkg/util/flagext"
40-
"github.com/cortexproject/cortex/pkg/util/grpcclient"
4140
util_log "github.com/cortexproject/cortex/pkg/util/log"
4241
"github.com/cortexproject/cortex/pkg/util/services"
4342
"github.com/cortexproject/cortex/pkg/util/validation"
@@ -100,7 +99,7 @@ type Config struct {
10099
// Labels to add to all alerts
101100
ExternalLabels labels.Labels `yaml:"external_labels,omitempty" doc:"nocli|description=Labels to add to all alerts."`
102101
// GRPC Client configuration.
103-
ClientTLSConfig grpcclient.Config `yaml:"ruler_client"`
102+
ClientTLSConfig ClientConfig `yaml:"ruler_client"`
104103
// How frequently to evaluate rules by default.
105104
EvaluationInterval time.Duration `yaml:"evaluation_interval"`
106105
// How frequently to poll for updated rules.
@@ -154,8 +153,7 @@ type Config struct {
154153
EnableQueryStats bool `yaml:"query_stats_enabled"`
155154
DisableRuleGroupLabel bool `yaml:"disable_rule_group_label"`
156155

157-
EnableHAEvaluation bool `yaml:"enable_ha_evaluation"`
158-
ListRulesFanoutTimeout time.Duration `yaml:"list_rules_fanout_timeout"`
156+
EnableHAEvaluation bool `yaml:"enable_ha_evaluation"`
159157
}
160158

161159
// Validate config and returns error on failure
@@ -180,7 +178,7 @@ func (cfg *Config) Validate(limits validation.Limits, log log.Logger) error {
180178

181179
// RegisterFlags adds the flags required to config this to the given FlagSet
182180
func (cfg *Config) RegisterFlags(f *flag.FlagSet) {
183-
cfg.ClientTLSConfig.RegisterFlagsWithPrefix("ruler.client", "", f)
181+
cfg.ClientTLSConfig.RegisterFlagsWithPrefix("ruler.client", f)
184182
cfg.Ring.RegisterFlags(f)
185183
cfg.Notifier.RegisterFlags(f)
186184

@@ -226,7 +224,6 @@ func (cfg *Config) RegisterFlags(f *flag.FlagSet) {
226224
f.BoolVar(&cfg.DisableRuleGroupLabel, "ruler.disable-rule-group-label", false, "Disable the rule_group label on exported metrics")
227225

228226
f.BoolVar(&cfg.EnableHAEvaluation, "ruler.enable-ha-evaluation", false, "Enable high availability")
229-
f.DurationVar(&cfg.ListRulesFanoutTimeout, "ruler.list-rules-fanout-timeout", 2*time.Minute, "Timeout for fanout calls to other rulers")
230227

231228
cfg.RingCheckPeriod = 5 * time.Second
232229
}
@@ -312,7 +309,7 @@ type Ruler struct {
312309

313310
// NewRuler creates a new ruler from a distributor and chunk store.
314311
func NewRuler(cfg Config, manager MultiTenantManager, reg prometheus.Registerer, logger log.Logger, ruleStore rulestore.RuleStore, limits RulesLimits) (*Ruler, error) {
315-
return newRuler(cfg, manager, reg, logger, ruleStore, limits, newRulerClientPool(cfg.ClientTLSConfig, logger, reg))
312+
return newRuler(cfg, manager, reg, logger, ruleStore, limits, newRulerClientPool(cfg.ClientTLSConfig.Config, logger, reg))
316313
}
317314

318315
func newRuler(cfg Config, manager MultiTenantManager, reg prometheus.Registerer, logger log.Logger, ruleStore rulestore.RuleStore, limits RulesLimits, clientPool ClientsPool) (*Ruler, error) {
@@ -1300,7 +1297,7 @@ func (r *Ruler) getShardedRules(ctx context.Context, userID string, rulesRequest
13001297
return errors.Wrapf(err, "unable to get client for ruler %s", addr)
13011298
}
13021299

1303-
ctx, cancel := context.WithTimeout(ctx, r.cfg.ListRulesFanoutTimeout)
1300+
ctx, cancel := context.WithTimeout(ctx, r.cfg.ClientTLSConfig.RemoteTimeout)
13041301
defer cancel()
13051302
newGrps, err := rulerClient.Rules(ctx, &RulesRequest{
13061303
RuleNames: rulesRequest.GetRuleNames(),

pkg/ruler/ruler_client_config.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package ruler
2+
3+
import (
4+
"flag"
5+
"time"
6+
7+
"github.com/cortexproject/cortex/pkg/util/grpcclient"
8+
)
9+
10+
type ClientConfig struct {
11+
grpcclient.Config `yaml:",inline"`
12+
RemoteTimeout time.Duration `yaml:"remote_timeout"`
13+
}
14+
15+
func (cfg *ClientConfig) RegisterFlagsWithPrefix(prefix string, f *flag.FlagSet) {
16+
cfg.Config.RegisterFlagsWithPrefix(prefix, "", f)
17+
f.DurationVar(&cfg.RemoteTimeout, prefix+".remote-timeout", 2*time.Minute, "Timeout for downstream rulers.")
18+
}

pkg/ruler/ruler_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,7 @@ func (p *mockRulerClientsPool) GetClientFor(addr string) (RulerClient, error) {
229229

230230
func newMockClientsPool(cfg Config, logger log.Logger, reg prometheus.Registerer, rulerAddrMap map[string]*Ruler) *mockRulerClientsPool {
231231
return &mockRulerClientsPool{
232-
ClientsPool: newRulerClientPool(cfg.ClientTLSConfig, logger, reg),
232+
ClientsPool: newRulerClientPool(cfg.ClientTLSConfig.Config, logger, reg),
233233
cfg: cfg,
234234
rulerAddrMap: rulerAddrMap,
235235
}

0 commit comments

Comments
 (0)