fix: remove hold WaitGroup in TestConcurrentFetch #19617
Merged
+3
−9
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.
Fixes: coder/internal#950
Pretty sure the intention of the
hold
wait group is to try to get the two goroutines that the test starts running at the same time. But, that should be the case for two goroutines started anyway.The use of
hold
doesn't actually guarantee concurrent execution ofAcquire
, just that both goroutines get as far asDone()
--- the go scheduler could run them serially without incident.So I've chosen to just remove the use of
hold
to simplify.But, for posterity, the data race was due to incrementing by 1 in the loop along with the goroutine that calls Done. You could increment by 1 and then back down to 0 before the second iteration of the loop starts. This then causes a data race with calling
Wait()
in the first goroutine andAdd()
in the second iteration. c.f. https://pkg.go.dev/sync#WaitGroup.Add