mirror of https://github.com/coder/coder.git
chore: resolve race when running load tests with logs (#6523)
See https://github.com/coder/coder/actions/runs/4370166746/jobs/7644793277
This commit is contained in:
parent
5304b4e483
commit
a78786119d
|
@ -45,11 +45,12 @@ func NewRunner(client *codersdk.Client, cfg Config) *Runner {
|
|||
}
|
||||
|
||||
// Run implements Runnable.
|
||||
func (r *Runner) Run(ctx context.Context, _ string, logs io.Writer) error {
|
||||
func (r *Runner) Run(ctx context.Context, _ string, w io.Writer) error {
|
||||
ctx, span := tracing.StartSpan(ctx)
|
||||
defer span.End()
|
||||
|
||||
logs = loadtestutil.NewSyncWriter(logs)
|
||||
logs := loadtestutil.NewSyncWriter(w)
|
||||
defer logs.Close()
|
||||
logger := slog.Make(sloghuman.Sink(logs)).Leveled(slog.LevelDebug)
|
||||
r.client.Logger = logger
|
||||
r.client.LogBodies = true
|
||||
|
|
|
@ -7,8 +7,9 @@ import (
|
|||
|
||||
// SyncWriter wraps an io.Writer in a sync.Mutex.
|
||||
type SyncWriter struct {
|
||||
mut *sync.Mutex
|
||||
w io.Writer
|
||||
mut *sync.Mutex
|
||||
w io.Writer
|
||||
closed bool
|
||||
}
|
||||
|
||||
func NewSyncWriter(w io.Writer) *SyncWriter {
|
||||
|
@ -22,5 +23,15 @@ func NewSyncWriter(w io.Writer) *SyncWriter {
|
|||
func (sw *SyncWriter) Write(p []byte) (n int, err error) {
|
||||
sw.mut.Lock()
|
||||
defer sw.mut.Unlock()
|
||||
if sw.closed {
|
||||
return -1, io.ErrClosedPipe
|
||||
}
|
||||
return sw.w.Write(p)
|
||||
}
|
||||
|
||||
func (sw *SyncWriter) Close() error {
|
||||
sw.mut.Lock()
|
||||
defer sw.mut.Unlock()
|
||||
sw.closed = true
|
||||
return nil
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue