fix: solve Offset Manager and Worker racing condition when stopping #484
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
There was a racing condition between the Offset Manager and the Consumer Worker, which needed to be fixed. The Cancellation token that was passed to the EnqueueAsync worker method was removed, which meant that the worker would accept the message before stopping. Previously, the behaviour was to cancel the last message delivery, but to do this, we needed to try to enqueue the message in the worker and then enqueue the message in the Offset Manager. Calling the method in this order caused a racing condition, as the worker could process the message before it was enqueued in the Offset Manager, triggering an exception and stopping the consumer.
Fixes #482 #488
How Has This Been Tested?
The tests were manually executed and the automated tests were run.
Checklist
Disclaimer
By sending us your contributions, you are agreeing that your contribution is made subject to the terms of our Contributor Ownership Statement