fix: ignore EINVAL when fsyncing `/dev/stdout` (#5648)

This commit is contained in:
Colin Adler 2023-01-10 10:15:53 -06:00 committed by GitHub
parent d2ef727064
commit d34540ca30
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 4 additions and 1 deletions

View File

@ -9,6 +9,7 @@ import (
"strconv"
"strings"
"sync"
"syscall"
"time"
"github.com/google/uuid"
@ -185,7 +186,9 @@ func (o *scaleTestOutput) write(res harness.Results, stdout io.Writer) error {
// Sync the file to disk if it's a file.
if s, ok := w.(interface{ Sync() error }); ok {
err := s.Sync()
if err != nil {
// On Linux, EINVAL is returned when calling fsync on /dev/stdout. We
// can safely ignore this error.
if err != nil && !xerrors.Is(err, syscall.EINVAL) {
return xerrors.Errorf("flush output file: %w", err)
}
}