diff --git a/pkg/storage/unified/federated/stats.go b/pkg/storage/unified/federated/stats.go index 98440932ace..a126bcb30fb 100644 --- a/pkg/storage/unified/federated/stats.go +++ b/pkg/storage/unified/federated/stats.go @@ -31,7 +31,17 @@ func (s *LegacyStatsGetter) GetStats(ctx context.Context, in *resource.ResourceS rsp := &resource.ResourceStatsResponse{} err = helper.DB.WithDbSession(ctx, func(sess *sqlstore.DBSession) error { - fn := func(table, where, g, r string) error { + fn := func(table, where, g, r string, existCheck bool) error { + // if existCheck is true, do not error out if the table does not exist + if existCheck { + exists, err := sess.IsTableExist(helper.Table(table)) + if !exists { + return nil + } else if err != nil { + return err + } + } + count, err := sess.Table(helper.Table(table)).Where(where, info.OrgID, in.Folder).Count() if err != nil { return err @@ -47,25 +57,25 @@ func (s *LegacyStatsGetter) GetStats(ctx context.Context, in *resource.ResourceS group := "sql-fallback" // Legacy alert rule table - err = fn("alert_rule", "org_id=? AND dashboard_uid=?", group, "alertrules") + err = fn("alert_rule", "org_id=? AND dashboard_uid=?", group, "alertrules", false) if err != nil { return err } // Legacy dashboard table - err = fn("dashboard", "org_id=? AND folder_uid=?", group, "dashboards") + err = fn("dashboard", "org_id=? AND folder_uid=?", group, "dashboards", true) if err != nil { return err } // Legacy folder table - err = fn("folder", "org_id=? AND parent_uid=?", group, "folders") + err = fn("folder", "org_id=? AND parent_uid=?", group, "folders", true) if err != nil { return err } // Legacy library_elements table - err = fn("library_element", "org_id=? AND folder_uid=?", group, "library_elements") + err = fn("library_element", "org_id=? AND folder_uid=?", group, "library_elements", false) if err != nil { return err }