From c26a16294c97478295ae214ad2506e53c92a97a5 Mon Sep 17 00:00:00 2001 From: Steven Danna <danna@cockroachlabs.com> Date: Tue, 21 Sep 2021 11:24:20 +0100 Subject: [PATCH] workload: log histogram write/encode failures, close output file We are currently observing incomplete histograms being output during nightly roachperf tpccbench runs. I don't think the changes here are likely to address the cause, as I would expect write failures to affect a broader range of roachperf output. But, it is still good to log any failures we do encounter. Further, we now sync and close the file explicitly. Informs #70313 Release note: None --- pkg/workload/cli/run.go | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/pkg/workload/cli/run.go b/pkg/workload/cli/run.go index c1d034acb103..dc054c3345c4 100644 --- a/pkg/workload/cli/run.go +++ b/pkg/workload/cli/run.go @@ -509,6 +509,15 @@ func runRun(gen workload.Generator, urls []string, dbName string) error { return err } jsonEnc = json.NewEncoder(jsonF) + defer func() { + if err := jsonF.Sync(); err != nil { + log.Warningf(ctx, "histogram: %v", err) + } + + if err := jsonF.Close(); err != nil { + log.Warningf(ctx, "histogram: %v", err) + } + }() } everySecond := log.Every(*displayEvery) @@ -529,7 +538,9 @@ func runRun(gen workload.Generator, urls []string, dbName string) error { reg.Tick(func(t histogram.Tick) { formatter.outputTick(startElapsed, t) if jsonEnc != nil && rampDone == nil { - _ = jsonEnc.Encode(t.Snapshot()) + if err := jsonEnc.Encode(t.Snapshot()); err != nil { + log.Warningf(ctx, "histogram: %v", err) + } } }) @@ -558,7 +569,9 @@ func runRun(gen workload.Generator, urls []string, dbName string) error { // Note that we're outputting the delta from the last tick. The // cumulative histogram can be computed by merging all of the // per-tick histograms. - _ = jsonEnc.Encode(t.Snapshot()) + if err := jsonEnc.Encode(t.Snapshot()); err != nil { + log.Warningf(ctx, "histogram: %v", err) + } } if ops.ResultHist == `` || ops.ResultHist == t.Name { if resultTick.Cumulative == nil {