diff --git a/core/auth/auth.go b/core/auth/auth.go index fd2b670a..ddd12767 100644 --- a/core/auth/auth.go +++ b/core/auth/auth.go @@ -113,9 +113,9 @@ func WithAdminUser(ctx context.Context, ds model.DataStore) context.Context { if err != nil { c, err := ds.User(ctx).CountAll() if c == 0 && err == nil { - log.Debug(ctx, "Scanner: No admin user yet!", err) + log.Debug(ctx, "No admin user yet!", err) } else { - log.Error(ctx, "Scanner: No admin user found!", err) + log.Error(ctx, "No admin user found!", err) } u = &model.User{} } diff --git a/core/metrics/insights.go b/core/metrics/insights.go index 010c24c2..820e6d7b 100644 --- a/core/metrics/insights.go +++ b/core/metrics/insights.go @@ -22,6 +22,7 @@ import ( "github.com/navidrome/navidrome/core/metrics/insights" "github.com/navidrome/navidrome/log" "github.com/navidrome/navidrome/model" + "github.com/navidrome/navidrome/model/request" "github.com/navidrome/navidrome/plugins/schema" "github.com/navidrome/navidrome/utils/singleton" ) @@ -64,9 +65,16 @@ func GetInstance(ds model.DataStore, pluginLoader PluginLoader) Insights { } func (c *insightsCollector) Run(ctx context.Context) { - ctx = auth.WithAdminUser(ctx, c.ds) for { - c.sendInsights(ctx) + // Refresh admin context on each iteration to handle cases where + // admin user wasn't available on previous runs + insightsCtx := auth.WithAdminUser(ctx, c.ds) + u, _ := request.UserFrom(insightsCtx) + if !u.IsAdmin { + log.Trace(insightsCtx, "No admin user available, skipping insights collection") + } else { + c.sendInsights(insightsCtx) + } select { case <-time.After(consts.InsightsUpdateInterval): continue