Cherry-pick #19821 to 7.x: libbeat/publisher/pipeline: fix data races #19865
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.
Cherry-pick of PR #19821 to 7.x branch. Original message:
What does this PR do?
Fix how we pass the initial queue consumer into
eventConsumer.loop
;we were referencing c.consumer in a background goroutine, which can
race with updates to the consumer.
Update tests to properly load atomic variables. Changed serially updated
numEvents
vars to basic, non-atomic types.Why is it important?
I'm not sure if this particular data race would cause any issues in production,
but we (apm-server) rely on the race detector to pick up real issues. This is
causing our tests to fail.
Checklist
- [ ] I have commented my code, particularly in hard-to-understand areas- [ ] I have made corresponding changes to the documentation- [ ] I have made corresponding change to the default configuration files- [ ] I have added tests that prove my fix is effective or that my feature worksCHANGELOG.next.asciidoc
orCHANGELOG-developer.next.asciidoc
.(Does this change need a changelog entry? This is a fix to a recently merged change.)
How to test this PR locally
go test -race ./libbeat/publisher/pipeline