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.
|
// 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)
|
ctx, span := tracing.StartSpan(ctx)
|
||||||
defer span.End()
|
defer span.End()
|
||||||
|
|
||||||
logs = loadtestutil.NewSyncWriter(logs)
|
logs := loadtestutil.NewSyncWriter(w)
|
||||||
|
defer logs.Close()
|
||||||
logger := slog.Make(sloghuman.Sink(logs)).Leveled(slog.LevelDebug)
|
logger := slog.Make(sloghuman.Sink(logs)).Leveled(slog.LevelDebug)
|
||||||
r.client.Logger = logger
|
r.client.Logger = logger
|
||||||
r.client.LogBodies = true
|
r.client.LogBodies = true
|
||||||
|
|
|
@ -7,8 +7,9 @@ import (
|
||||||
|
|
||||||
// SyncWriter wraps an io.Writer in a sync.Mutex.
|
// SyncWriter wraps an io.Writer in a sync.Mutex.
|
||||||
type SyncWriter struct {
|
type SyncWriter struct {
|
||||||
mut *sync.Mutex
|
mut *sync.Mutex
|
||||||
w io.Writer
|
w io.Writer
|
||||||
|
closed bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewSyncWriter(w io.Writer) *SyncWriter {
|
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) {
|
func (sw *SyncWriter) Write(p []byte) (n int, err error) {
|
||||||
sw.mut.Lock()
|
sw.mut.Lock()
|
||||||
defer sw.mut.Unlock()
|
defer sw.mut.Unlock()
|
||||||
|
if sw.closed {
|
||||||
|
return -1, io.ErrClosedPipe
|
||||||
|
}
|
||||||
return sw.w.Write(p)
|
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