fix(blooms): Initialize bloom gateway client only once (backport release-3.4.x) (#16268)

Co-authored-by: Christian Haudum <christian.haudum@gmail.com>
pull/16272/head
loki-gh-app[bot] 3 months ago committed by GitHub
parent fb4ea87e78
commit 1b9829b489
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 4
      pkg/loki/loki.go
  2. 30
      pkg/loki/modules.go

@ -370,6 +370,7 @@ type Loki struct {
ingesterQuerier *querier.IngesterQuerier
Store storage.Store
BloomStore bloomshipper.Store
bloomGatewayClient bloomgateway.Client
tableManager *index.TableManager
frontend Frontend
ruler *base_ruler.Ruler
@ -694,6 +695,7 @@ func (t *Loki) setupModuleManager() error {
mm.RegisterModule(IndexGatewayRing, t.initIndexGatewayRing, modules.UserInvisibleModule)
mm.RegisterModule(IndexGatewayInterceptors, t.initIndexGatewayInterceptors, modules.UserInvisibleModule)
mm.RegisterModule(BloomGateway, t.initBloomGateway)
mm.RegisterModule(BloomGatewayClient, t.initBloomGatewayClient)
mm.RegisterModule(QueryScheduler, t.initQueryScheduler)
mm.RegisterModule(QuerySchedulerRing, t.initQuerySchedulerRing, modules.UserInvisibleModule)
mm.RegisterModule(Analytics, t.initAnalytics, modules.UserInvisibleModule)
@ -732,7 +734,7 @@ func (t *Loki) setupModuleManager() error {
BloomGateway: {Server, BloomStore, Analytics},
BloomPlanner: {Server, BloomStore, Analytics, Store},
BloomBuilder: {Server, BloomStore, Analytics, Store},
BloomStore: {IndexGatewayRing},
BloomStore: {IndexGatewayRing, BloomGatewayClient},
PatternRingClient: {Server, MemberlistKV, Analytics},
PatternIngesterTee: {Server, MemberlistKV, Analytics, PatternRingClient},
PatternIngester: {Server, MemberlistKV, Analytics, PatternRingClient, PatternIngesterTee, Overrides},

@ -128,6 +128,7 @@ const (
IndexGatewayInterceptors = "index-gateway-interceptors"
BloomStore = "bloom-store"
BloomGateway = "bloom-gateway"
BloomGatewayClient = "bloom-gateway-client"
BloomPlanner = "bloom-planner"
BloomBuilder = "bloom-builder"
QueryScheduler = "query-scheduler"
@ -1549,16 +1550,12 @@ func (t *Loki) initIndexGateway() (services.Service, error) {
var bloomQuerier indexgateway.BloomQuerier
if t.Cfg.BloomGateway.Enabled {
bloomGatewayClient, err := bloomgateway.NewClient(t.Cfg.BloomGateway.Client, prometheus.DefaultRegisterer, logger)
if err != nil {
return nil, err
}
resolver := bloomgateway.NewBlockResolver(t.BloomStore, logger)
querierCfg := bloomgateway.QuerierConfig{
BuildTableOffset: t.Cfg.BloomBuild.Planner.MinTableOffset,
BuildInterval: t.Cfg.BloomBuild.Planner.PlanningInterval,
}
bloomQuerier = bloomgateway.NewQuerier(bloomGatewayClient, querierCfg, t.Overrides, resolver, prometheus.DefaultRegisterer, logger)
bloomQuerier = bloomgateway.NewQuerier(t.bloomGatewayClient, querierCfg, t.Overrides, resolver, prometheus.DefaultRegisterer, logger)
}
gateway, err := indexgateway.NewIndexGateway(t.Cfg.IndexGateway, t.Overrides, logger, prometheus.DefaultRegisterer, t.Store, indexClients, bloomQuerier)
@ -1653,6 +1650,18 @@ func (t *Loki) initBloomPlanner() (services.Service, error) {
return p, nil
}
func (t *Loki) initBloomGatewayClient() (services.Service, error) {
var err error
if t.Cfg.BloomGateway.Enabled {
logger := log.With(util_log.Logger, "component", "bloom-gateway-client")
t.bloomGatewayClient, err = bloomgateway.NewClient(t.Cfg.BloomGateway.Client, prometheus.DefaultRegisterer, logger)
if err != nil {
return nil, err
}
}
return nil, nil
}
func (t *Loki) initBloomBuilder() (services.Service, error) {
if !t.Cfg.BloomBuild.Enabled {
return nil, nil
@ -1670,15 +1679,6 @@ func (t *Loki) initBloomBuilder() (services.Service, error) {
ringManager = t.indexGatewayRingManager
}
var bloomGatewayClient bloomgateway.Client
if t.Cfg.BloomGateway.Enabled {
var err error
bloomGatewayClient, err = bloomgateway.NewClient(t.Cfg.BloomGateway.Client, prometheus.DefaultRegisterer, logger)
if err != nil {
return nil, err
}
}
return builder.New(
t.Cfg.BloomBuild.Builder,
t.Overrides,
@ -1687,7 +1687,7 @@ func (t *Loki) initBloomBuilder() (services.Service, error) {
t.ClientMetrics,
t.Store,
t.BloomStore,
bloomGatewayClient,
t.bloomGatewayClient,
logger,
prometheus.DefaultRegisterer,
ringManager,

Loading…
Cancel
Save