Retry update issue position on rebalancing [RUN ALL RSPEC] [RUN AS-IF-FOSS]
What does this MR do?
Implement a retry mechanism on issues relative position update. We see quite often that some updates on relative position update get a statement timeout, ie. the update takes longer than 15 secs timeout on production. That can be because of couple reasons:
- one or more of the updated rows are being locked by another update
- the updated rows are too spread or too big and updating the rows actually takes longer than 15 secs, especially as we have quite a few indexes on issues table.
With this MR we are trying to add a retry mechanism, where we try to obtain a lock on the rows we want to update in several retries, as well as 3 retries on each update batch and scale down the batches if the 3 retries fail.
The retry mechanism is also being added behind a FF, so to try it out you'd need to enable issue_rebalancing_with_retry
FF.
Screenshots (strongly suggested)
Does this MR meet the acceptance criteria?
Conformity
-
📋 Does this MR need a changelog?-
I have included a changelog entry. -
I have not included a changelog entry because _____.
-
-
Documentation (if required) -
Code review guidelines -
Merge request performance guidelines -
Style guides -
Database guides -
Separation of EE specific content
Availability and Testing
-
Review and add/update tests for this feature/bug. Consider all test levels. See the Test Planning Process. -
Tested in all supported browsers -
Informed Infrastructure department of a default or new setting change, if applicable per definition of done
Security
If this MR contains changes to processing or storing of credentials or tokens, authorization and authentication methods and other items described in the security review guidelines:
-
Label as security and @ mention @gitlab-com/gl-security/appsec
-
The MR includes necessary changes to maintain consistency between UI, API, email, or other methods -
Security reports checked/validated by a reviewer from the AppSec team