Chore: Fix grafana live stats reset when sending usage stats (#39558)

This commit is contained in:
Tania B 2021-09-23 12:55:00 +03:00 committed by GitHub
parent 65d79d9a30
commit b9acdce837
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 24 additions and 2 deletions

View File

@ -113,6 +113,8 @@ func (usm *usageStatsMock) ShouldBeReported(_ string) bool {
return true
}
func (usm *usageStatsMock) RegisterSendReportCallback(_ usagestats.SendReportCallbackFunc) {}
func newTestLive(t *testing.T) *live.GrafanaLive {
cfg := &setting.Cfg{AppURL: "http://localhost:3000/"}
gLive, err := live.ProvideService(nil, cfg, routing.NewRouteRegister(), nil, nil, nil, nil, sqlstore.InitTestDB(t), &usageStatsMock{t: t})

View File

@ -17,8 +17,11 @@ type Report struct {
type MetricsFunc func() (map[string]interface{}, error)
type SendReportCallbackFunc func()
type Service interface {
GetUsageReport(context.Context) (Report, error)
RegisterMetricsFunc(MetricsFunc)
RegisterSendReportCallback(SendReportCallbackFunc)
ShouldBeReported(string) bool
}

View File

@ -29,6 +29,7 @@ type UsageStats struct {
externalMetrics []usagestats.MetricsFunc
concurrentUserStatsCache memoConcurrentUserStats
startTime time.Time
sendReportCallbacks []usagestats.SendReportCallbackFunc
}
func ProvideService(cfg *setting.Cfg, bus bus.Bus, sqlStore *sqlstore.SQLStore, pluginManager plugins.Manager,
@ -91,6 +92,10 @@ func (uss *UsageStats) Run(ctx context.Context) error {
nextSendInterval = sendInterval
sendReportTicker.Reset(nextSendInterval)
}
for _, callback := range uss.sendReportCallbacks {
callback()
}
case <-updateStatsTicker.C:
uss.updateTotalStats()
case <-ctx.Done():
@ -138,3 +143,7 @@ FROM (select count(1) as tokens from user_auth_token group by user_id) uat;`
uss.concurrentUserStatsCache.memoized = time.Now()
return uss.concurrentUserStatsCache.stats, nil
}
func (uss *UsageStats) RegisterSendReportCallback(c usagestats.SendReportCallbackFunc) {
uss.sendReportCallbacks = append(uss.sendReportCallbacks, c)
}

View File

@ -71,6 +71,8 @@ func (usm *usageStatsMock) ShouldBeReported(_ string) bool {
return true
}
func (usm *usageStatsMock) RegisterSendReportCallback(_ usagestats.SendReportCallbackFunc) {}
type evaluatingPermissionsTestCase struct {
desc string
user userTestCase

View File

@ -67,6 +67,8 @@ func (usm *usageStatsMock) ShouldBeReported(_ string) bool {
return true
}
func (usm *usageStatsMock) RegisterSendReportCallback(_ usagestats.SendReportCallbackFunc) {}
func TestEngineProcessJob(t *testing.T) {
Convey("Alerting engine job processing", t, func() {
bus := bus.New()

View File

@ -1031,7 +1031,13 @@ func (g *GrafanaLive) sampleLiveStats() {
}
}
func (g *GrafanaLive) resetLiveStats() {
g.usageStats = usageStats{}
}
func (g *GrafanaLive) registerUsageMetrics() {
g.usageStatsService.RegisterSendReportCallback(g.resetLiveStats)
g.usageStatsService.RegisterMetricsFunc(func() (map[string]interface{}, error) {
liveUsersAvg := 0
liveClientsAvg := 0
@ -1051,8 +1057,6 @@ func (g *GrafanaLive) registerUsageMetrics() {
"stats.live_clients_avg.count": liveClientsAvg,
}
g.usageStats = usageStats{}
return metrics, nil
})
}