Improve thread safety to avoid race conditions during shutdown. #66
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.
This PR implements thread safety mechanisms during application shutdown and integration tests to avoid transient errors such as these.
Plugin change:
As described in #67 there was a race condition where the consumer tried to ack a message when the channel was closed, raising an
ChannelAlreadyClosedexception. This changes include a sync between the plugin shutdown and the consumer thread to avoid acking messages when the channel has been closed.Integration tests improvements:
Previously, the consumer thread created during each test startup was not stopped gracefully at test closure. This could cause errors , as the consumer thread might attempt to interact with a channel that had already been closed after the test finished.
To address the mutex synchronization error during exchange deletion, the deletion now occurs only after the consumer thread has been gracefully stopped using
joinfunction.Another improvement is the deterministic wait for the channel to have consumers, replacing the previous
sleep 4. This change makes test execution faster and more reliable, reducing the wait time from 4 seconds to 1 second per test.Thanks for contributing to Logstash! If you haven't already signed our CLA, here's a handy link: https://www.elastic.co/contributor-agreement/