fix: Avoid race condition in set_last_alert #5364
Open
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.
Closes #5354
📑 Description
In order to face the race condition. it has been modified the checking strategy after if the value is present.
With the current strategy, a query is built where we include the action in case of conflict, i.e when the lastalert already exists.
Moreover, as this strategy depends on the underlying engine, it has been implemented for 3 engines:
About the fails catching, it has been moved to the decorator.
With this modification race conditions should be avoided, when the same alert (tenant+fingerprint) comes in twice.
✅ Checks
ℹ Additional Information
Since the function modified is so called in the principal flow, be careful in its review.