mirror of https://github.com/pulumi/pulumi.git
f6f2c5db1c
In https://github.com/pulumi/pulumi/pull/18044 we vendored the nxadm/tail library and pulled in a couple of changes from upstream to avoid race conditions. However the changes from upstream were not sufficient. Namely, one of the changes was to try and avoid exiting early if tail is meant to stop at the next EOF. It did so by setting the earlyExitChan to `nil` if tail was requested to shut down with a stopAtEOF error. However it is possible that stopAtEOF is written to the earlyExitChan after we checked `tail.Err()`, but before we get to the select. In that case we can still get an early exit on EOF, which we don't want. Move the check for the stopAtEOF error into the earlyExitChan case. At this point tail.Err() is guaranteed to be set correctly, if the user requested a stop at eof. Also fix a separate race in the test, where the test called `Stop()` twice, which was incorrect and unnecessary. (This unflaked the test `TestFollowUntilEof` locally for me. Using `go test -run TestFollowUntilEof\$ -count 10000 .` would fail pretty consistently after a couple of time max. With this change running it in a loop doesn't seem to break it anymore) This requires no separate changelog entry since https://github.com/pulumi/pulumi/pull/18044 was not released yet. --------- Co-authored-by: Will Jones <will@sacharissa.co.uk> |
||
---|---|---|
.. | ||
LICENSE | ||
tail.go | ||
tail_posix.go | ||
tail_test.go | ||
tail_windows.go |