Lock metrics on mutation

This commit is contained in:
Gabe Kangas 2022-03-17 18:07:55 -07:00
parent 1df4c96963
commit 992e819f38
No known key found for this signature in database
GPG key ID: 9A56337728BC81EA
2 changed files with 16 additions and 0 deletions

View file

@ -1,6 +1,7 @@
package metrics
import (
"sync"
"time"
"github.com/owncast/owncast/config"
@ -20,6 +21,8 @@ const (
// CollectedMetrics stores different collected + timestamped values.
type CollectedMetrics struct {
m sync.Mutex `json:"-"`
CPUUtilizations []TimestampedValue `json:"cpu"`
RAMUtilizations []TimestampedValue `json:"memory"`
DiskUtilizations []TimestampedValue `json:"disk"`
@ -65,6 +68,9 @@ func Start(getStatus func() models.Status) {
}
func handlePolling() {
metrics.m.Lock()
defer metrics.m.Unlock()
// Collect hardware stats
collectCPUUtilization()
collectRAMUtilization()

View file

@ -18,28 +18,38 @@ var (
// RegisterPlaybackErrorCount will add to the windowed playback error count.
func RegisterPlaybackErrorCount(count float64) {
metrics.m.Lock()
defer metrics.m.Unlock()
windowedErrorCounts = append(windowedErrorCounts, count)
}
// RegisterQualityVariantChangesCount will add to the windowed quality variant
// change count.
func RegisterQualityVariantChangesCount(count float64) {
metrics.m.Lock()
defer metrics.m.Unlock()
windowedQualityVariantChanges = append(windowedQualityVariantChanges, count)
}
// RegisterPlayerBandwidth will add to the windowed playback bandwidth.
func RegisterPlayerBandwidth(kbps float64) {
metrics.m.Lock()
defer metrics.m.Unlock()
windowedBandwidths = append(windowedBandwidths, kbps)
}
// RegisterPlayerLatency will add to the windowed player latency values.
func RegisterPlayerLatency(seconds float64) {
metrics.m.Lock()
defer metrics.m.Unlock()
windowedLatencies = append(windowedLatencies, seconds)
}
// RegisterPlayerSegmentDownloadDuration will add to the windowed player segment
// download duration values.
func RegisterPlayerSegmentDownloadDuration(seconds float64) {
metrics.m.Lock()
defer metrics.m.Unlock()
windowedDownloadDurations = append(windowedDownloadDurations, seconds)
}