From 1dfa529941643b486ceadb7f38cfd8f2b1f3d0eb Mon Sep 17 00:00:00 2001 From: bergquist Date: Tue, 5 Dec 2017 13:58:56 +0100 Subject: [PATCH] dashboards as cfg: avoid walking fs in parallel --- pkg/services/provisioning/dashboards/file_reader.go | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/pkg/services/provisioning/dashboards/file_reader.go b/pkg/services/provisioning/dashboards/file_reader.go index 3491960e329..42f232bca82 100644 --- a/pkg/services/provisioning/dashboards/file_reader.go +++ b/pkg/services/provisioning/dashboards/file_reader.go @@ -64,16 +64,24 @@ func (fr *fileReader) getCache(key string) (*dashboards.SaveDashboardItem, bool) } func (fr *fileReader) ReadAndListen(ctx context.Context) error { - ticker := time.NewTicker(time.Second * 5) + ticker := time.NewTicker(time.Second * 3) if err := fr.walkFolder(); err != nil { fr.log.Error("failed to search for dashboards", "error", err) } + running := false + for { select { case <-ticker.C: - fr.walkFolder() + if !running { // avoid walking the filesystem in parallel. incase fs is very slow. + running = true + go func() { + fr.walkFolder() + running = false + }() + } case <-ctx.Done(): return nil }