Search: Build indexes on start for all orgs (#50762)

This commit is contained in:
Alexander Emelin
2022-06-22 13:12:07 +03:00
committed by GitHub
parent 6e44b36a30
commit 54e9408cfd
2 changed files with 87 additions and 24 deletions

View File

@@ -3,6 +3,7 @@ package searchV2
import (
"context"
"errors"
"fmt"
"github.com/grafana/grafana/pkg/infra/log"
"github.com/grafana/grafana/pkg/models"
@@ -59,7 +60,16 @@ func (s *StandardSearchService) IsDisabled() bool {
}
func (s *StandardSearchService) Run(ctx context.Context) error {
return s.dashboardIndex.run(ctx)
orgQuery := &models.SearchOrgsQuery{}
err := s.sql.SearchOrgs(ctx, orgQuery)
if err != nil {
return fmt.Errorf("can't get org list: %w", err)
}
orgIDs := make([]int64, 0, len(orgQuery.Result))
for _, org := range orgQuery.Result {
orgIDs = append(orgIDs, org.Id)
}
return s.dashboardIndex.run(ctx, orgIDs)
}
func (s *StandardSearchService) RegisterDashboardIndexExtender(ext DashboardIndexExtender) {
@@ -143,20 +153,17 @@ func (s *StandardSearchService) DoDashboardQuery(ctx context.Context, user *back
return rsp
}
reader, err := s.dashboardIndex.getOrCreateReader(ctx, orgID)
if err != nil {
rsp.Error = err
return rsp
}
err = s.dashboardIndex.sync(ctx)
if err != nil {
rsp.Error = err
return rsp
}
reader, ok := s.dashboardIndex.getOrgReader(orgID)
if !ok {
go func() {
s.dashboardIndex.buildSignals <- orgID
}()
rsp.Error = errors.New("search index is not ready, try again later")
return rsp
}
return doSearchQuery(ctx, s.logger, reader, filter, q, s.extender.GetQueryExtender(q), s.cfg.AppSubURL)
}