Skip to content

Commit a787861

Browse files
authored
chore: resolve race when running load tests with logs (coder#6523)
See https://github.com/coder/coder/actions/runs/4370166746/jobs/7644793277
1 parent 5304b4e commit a787861

File tree

2 files changed

+16
-4
lines changed

2 files changed

+16
-4
lines changed

scaletest/agentconn/run.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,11 +45,12 @@ func NewRunner(client *codersdk.Client, cfg Config) *Runner {
4545
}
4646

4747
// Run implements Runnable.
48-
func (r *Runner) Run(ctx context.Context, _ string, logs io.Writer) error {
48+
func (r *Runner) Run(ctx context.Context, _ string, w io.Writer) error {
4949
ctx, span := tracing.StartSpan(ctx)
5050
defer span.End()
5151

52-
logs = loadtestutil.NewSyncWriter(logs)
52+
logs := loadtestutil.NewSyncWriter(w)
53+
defer logs.Close()
5354
logger := slog.Make(sloghuman.Sink(logs)).Leveled(slog.LevelDebug)
5455
r.client.Logger = logger
5556
r.client.LogBodies = true

scaletest/loadtestutil/syncwriter.go

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,9 @@ import (
77

88
// SyncWriter wraps an io.Writer in a sync.Mutex.
99
type SyncWriter struct {
10-
mut *sync.Mutex
11-
w io.Writer
10+
mut *sync.Mutex
11+
w io.Writer
12+
closed bool
1213
}
1314

1415
func NewSyncWriter(w io.Writer) *SyncWriter {
@@ -22,5 +23,15 @@ func NewSyncWriter(w io.Writer) *SyncWriter {
2223
func (sw *SyncWriter) Write(p []byte) (n int, err error) {
2324
sw.mut.Lock()
2425
defer sw.mut.Unlock()
26+
if sw.closed {
27+
return -1, io.ErrClosedPipe
28+
}
2529
return sw.w.Write(p)
2630
}
31+
32+
func (sw *SyncWriter) Close() error {
33+
sw.mut.Lock()
34+
defer sw.mut.Unlock()
35+
sw.closed = true
36+
return nil
37+
}

0 commit comments

Comments
 (0)