Fix error in k8s after job completes #2804
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
There's a spurious error in some k8s job logs:
This happens when a job is ending normally. The cause is the surrounding context is being closed, and the goroutine that logs it then races the closure of the log writer.
While I'm here, I noticed that
cancelCh
is unbuffered, but there is a mismatch between sends and receives which would lead to leaking the goroutine that logs the message. So I fixed that by using a "close-with-guard pattern" (that's what I'm calling it, anyway).Context
Noticed a bug, and it was pretty easy to fix.
Changes
cancelCh
usage from sending to closingTesting
go test ./...
). Buildkite employees may check this if the pipeline has run automatically.go fmt ./...
)