fix: lock log sink against concurrent write and close (#10668)

fixes #10663
This commit is contained in:
Spike Curtis
2023-11-14 16:38:34 +04:00
committed by GitHub
parent 530be2f96a
commit dc4b1ef406
4 changed files with 101 additions and 5 deletions
+4 -2
View File
@@ -28,6 +28,7 @@ import (
"github.com/coder/coder/v2/cli/clibase"
"github.com/coder/coder/v2/cli/cliui"
"github.com/coder/coder/v2/cli/cliutil"
"github.com/coder/coder/v2/coderd/autobuild/notify"
"github.com/coder/coder/v2/coderd/util/ptr"
"github.com/coder/coder/v2/codersdk"
@@ -114,12 +115,13 @@ func (r *RootCmd) ssh() *clibase.Cmd {
if err != nil {
return xerrors.Errorf("error opening %s for logging: %w", logDirPath, err)
}
dc := cliutil.DiscardAfterClose(logFile)
go func() {
wg.Wait()
_ = logFile.Close()
_ = dc.Close()
}()
logger = slog.Make(sloghuman.Sink(logFile))
logger = logger.AppendSinks(sloghuman.Sink(dc))
if r.verbose {
logger = logger.Leveled(slog.LevelDebug)
}