From 1e7e149ed62f40609c5ae04ae30a675c7b95f551 Mon Sep 17 00:00:00 2001 From: Alexander Emelin Date: Tue, 24 May 2022 09:42:21 +0300 Subject: [PATCH] search: close unused reader and writer on re-indexing (#49458) --- pkg/services/searchV2/index.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pkg/services/searchV2/index.go b/pkg/services/searchV2/index.go index df53ec5d46f..29133fcd247 100644 --- a/pkg/services/searchV2/index.go +++ b/pkg/services/searchV2/index.go @@ -235,6 +235,12 @@ func (i *dashboardIndex) buildOrgIndex(ctx context.Context, orgID int64) (int, e "orgSearchDashboardCount", len(dashboards)) i.mu.Lock() + if oldReader, ok := i.perOrgReader[orgID]; ok { + _ = oldReader.Close() + } + if oldWriter, ok := i.perOrgWriter[orgID]; ok { + _ = oldWriter.Close() + } i.perOrgReader[orgID] = reader i.perOrgWriter[orgID] = writer i.mu.Unlock() @@ -347,6 +353,7 @@ func (i *dashboardIndex) applyDashboardEvent(ctx context.Context, orgID int64, d // Skip event for org not yet fully indexed. return nil } + // TODO: should we release index lock while performing removeDashboard/updateDashboard? reader, ok := i.perOrgReader[orgID] if !ok { // Skip event for org not yet fully indexed. @@ -364,6 +371,7 @@ func (i *dashboardIndex) applyDashboardEvent(ctx context.Context, orgID int64, d if err != nil { return err } + _ = reader.Close() i.perOrgReader[orgID] = newReader return nil }