aboutsummaryrefslogtreecommitdiffstats
path: root/syz-verifier/monitoring_api.go
diff options
context:
space:
mode:
authorTaras Madan <tarasmadan@google.com>2022-03-31 14:48:05 +0200
committerGitHub <noreply@github.com>2022-03-31 14:48:05 +0200
commit68fc921ad90a9ed3604448913e66d02ea8d11de6 (patch)
tree836206fbeadbdfcb9fc9071f7681d079e8210e33 /syz-verifier/monitoring_api.go
parentc4c32d8c774cb19ca838765ca4ddf38ab8dc0ddb (diff)
syz-verifier: fix stats access, remove races
Removed atomic operations. Added object level mutex.
Diffstat (limited to 'syz-verifier/monitoring_api.go')
-rw-r--r--syz-verifier/monitoring_api.go27
1 files changed, 14 insertions, 13 deletions
diff --git a/syz-verifier/monitoring_api.go b/syz-verifier/monitoring_api.go
index 1c95f9d26..3b082c264 100644
--- a/syz-verifier/monitoring_api.go
+++ b/syz-verifier/monitoring_api.go
@@ -44,25 +44,26 @@ func (monitor *Monitor) initHTTPHandlers() {
// statsJSON provides information for the "/api/stats.json" render.
type statsJSON struct {
StartTime time.Time
- TotalCallMismatches int64
- TotalProgs int64
- ExecErrorProgs int64
- FlakyProgs int64
- MismatchingProgs int64
- AverExecSpeed int64
+ TotalCallMismatches uint64
+ TotalProgs uint64
+ ExecErrorProgs uint64
+ FlakyProgs uint64
+ MismatchingProgs uint64
+ AverExecSpeed uint64
}
// handleStats renders the statsJSON object.
func (monitor *Monitor) renderStats() interface{} {
stats := monitor.externalStats
+
return &statsJSON{
- StartTime: stats.StartTime,
- TotalCallMismatches: stats.TotalCallMismatches,
- TotalProgs: stats.TotalProgs,
- ExecErrorProgs: stats.ExecErrorProgs,
- FlakyProgs: stats.FlakyProgs,
- MismatchingProgs: stats.MismatchingProgs,
- AverExecSpeed: 60 * stats.TotalProgs / int64(1+time.Since(stats.StartTime).Seconds()),
+ StartTime: stats.StartTime.Get(),
+ TotalCallMismatches: stats.TotalCallMismatches.Get(),
+ TotalProgs: stats.TotalProgs.Get(),
+ ExecErrorProgs: stats.ExecErrorProgs.Get(),
+ FlakyProgs: stats.FlakyProgs.Get(),
+ MismatchingProgs: stats.MismatchingProgs.Get(),
+ AverExecSpeed: 60 * stats.TotalProgs.Get() / uint64(1+time.Since(stats.StartTime.Get()).Seconds()),
}
}