initQueryFrontendTripperware instantiates the tripperware used by the query frontend to optimize Prometheus query requests.
()
| 539 | // initQueryFrontendTripperware instantiates the tripperware used by the query frontend |
| 540 | // to optimize Prometheus query requests. |
| 541 | func (t *Cortex) initQueryFrontendTripperware() (serv services.Service, err error) { |
| 542 | var queryAnalyzer querysharding.Analyzer |
| 543 | queryAnalyzer = querysharding.NewQueryAnalyzer() |
| 544 | if t.Cfg.Querier.EnableParquetQueryable { |
| 545 | // Disable vertical sharding for binary expression with ignore for parquet queryable. |
| 546 | queryAnalyzer = cortexquerysharding.NewDisableBinaryExpressionAnalyzer(queryAnalyzer) |
| 547 | } |
| 548 | |
| 549 | // PrometheusCodec is a codec to encode and decode Prometheus query range requests and responses. |
| 550 | prometheusCodec := queryrange.NewPrometheusCodec(false, t.Cfg.Querier.ResponseCompression, t.Cfg.API.QuerierDefaultCodec) |
| 551 | // ShardedPrometheusCodec is same as PrometheusCodec but to be used on the sharded queries (it sum up the stats) |
| 552 | shardedPrometheusCodec := queryrange.NewPrometheusCodec(true, t.Cfg.Querier.ResponseCompression, t.Cfg.API.QuerierDefaultCodec) |
| 553 | instantQueryCodec := instantquery.NewInstantQueryCodec(t.Cfg.Querier.ResponseCompression, t.Cfg.API.QuerierDefaultCodec) |
| 554 | |
| 555 | if t.Cfg.TenantFederation.Enabled && t.Cfg.TenantFederation.RegexMatcherEnabled { |
| 556 | // If regex matcher enabled, we use regex validator to pass regex to the querier |
| 557 | users.WithDefaultResolver(tenantfederation.NewRegexValidator()) |
| 558 | } |
| 559 | |
| 560 | queryRangeMiddlewares, cache, err := queryrange.Middlewares( |
| 561 | t.Cfg.QueryRange, |
| 562 | util_log.Logger, |
| 563 | t.OverridesConfig, |
| 564 | queryrange.PrometheusResponseExtractor{}, |
| 565 | prometheus.DefaultRegisterer, |
| 566 | queryAnalyzer, |
| 567 | prometheusCodec, |
| 568 | shardedPrometheusCodec, |
| 569 | t.Cfg.Querier.LookbackDelta, |
| 570 | t.Cfg.Querier.DefaultEvaluationInterval, |
| 571 | t.Cfg.Querier.DistributedExecEnabled, |
| 572 | t.Cfg.Querier.ThanosEngine.LogicalOptimizers, |
| 573 | ) |
| 574 | if err != nil { |
| 575 | return nil, err |
| 576 | } |
| 577 | |
| 578 | instantQueryMiddlewares, err := instantquery.Middlewares( |
| 579 | util_log.Logger, |
| 580 | t.OverridesConfig, |
| 581 | instantQueryCodec, |
| 582 | queryAnalyzer, |
| 583 | t.Cfg.Querier.LookbackDelta, |
| 584 | t.Cfg.Querier.DefaultEvaluationInterval, |
| 585 | t.Cfg.Querier.DistributedExecEnabled, |
| 586 | t.Cfg.Querier.ThanosEngine.LogicalOptimizers) |
| 587 | if err != nil { |
| 588 | return nil, err |
| 589 | } |
| 590 | |
| 591 | t.QueryFrontendTripperware = tripperware.NewQueryTripperware(util_log.Logger, |
| 592 | prometheus.DefaultRegisterer, |
| 593 | t.Cfg.QueryRange.ForwardHeaders, |
| 594 | queryRangeMiddlewares, |
| 595 | instantQueryMiddlewares, |
| 596 | prometheusCodec, |
| 597 | instantQueryCodec, |
| 598 | t.OverridesConfig, |
nothing calls this directly
no test coverage detected