Deflake ConcurrentPipeWriterTests.PassthroughIfAllFlushesAreAwaited #13563
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.
I missed adding a lock to PassthroughIfAllFlushesAreAwaited the last time I fixed this class in #12383.
I thought it was unnecessary because it was passthrough, but if we don't lock there's a race between calling
_currentFlushTcs.SetResult(flushResult)and nulling out the TCS to go back into passthrough mode. The race seems pretty rare, but I've seen it twice now.I could have reordered SetResult and nulling out the field, but since this is always done with a lock in practice, I decided to just update the test so it locks like all the other test methods in the class.
Addresses aspnet/AspNetCore-Internal#2839