[exporter/datadog] Avoid logging in chain provider goroutines to avoid data race #24899
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:
Fixes data race on
TestChain
that was caused by logging after the test was ended (see uber-go/zap#687 (comment) for details).To do this, we move the logging outside of the goroutines in the Chain provider.
Goroutines can still be running after the function has returned (this is intentional, their return value will just be ignored), but they will no longer log anything.
I also made the
Source
method honor cancellation of the context when waiting on providers.Link to tracking Issue: Reported on Slack, see https://cloud-native.slack.com/archives/C01N6P7KR6W/p1691074033049049?thread_ts=1690992010.123699&cid=C01N6P7KR6W