mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Chore: Fix grafana live stats reset when sending usage stats (#39558)
This commit is contained in:
parent
65d79d9a30
commit
b9acdce837
@ -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})
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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)
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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()
|
||||
|
@ -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
|
||||
})
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user