Fix flaky TransactionTests.testResponseStreamFails() test
#582
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.
Motivation
EmbeddedEventLoopevent loop is not thread-safe but we create aEventLoopFuturethat is required to be thread-safe from anEmbeddedEventLoop. This leads to undefined behaviour and therefore a flaky test.Modification
This PR replaces the
EventLoopFuturewith a simplePromiseimplementation that uses Swift Concurrency to protect against concurrent access.Result
Before this patch, I could reliably fail the test after ~5K repetitions.
With this patch, I have run the test 100K times without a single failure.
Note: this only effects code in the test target