Move Project Export of templates into a separate sidekiq queue
What does this MR do?
Related to: #284498 (closed) & #285054 (closed)
This MR creates a separate Template Export worker with a separate project_template_export
queue, outside of memory-bound
sidekiq shard, in order to help with P1S1 issue where users are not able to create new projects from custom templates (https://docs.gitlab.com/ee/user/group/custom_project_templates.html), or have extreme delays.
This is happening due to group level custom templates using Project Export functionality under the hood, which puts export job in the same queue as the rest of regular export jobs, which can cause delays. Additionally, since export jobs are running in memory-bound
shard as well as urgency: throttled
(https://docs.gitlab.com/ee/development/sidekiq_style_guide.html#job-urgency). This causes delays to increase even further, or timeout.
Additional information can be found here #284498 (comment 450304300)
After having a chat in slack with scalability group it's been concluded that having Template Exports in catchall shard should not be a problem, given average export duration as well as volume of such requests.
This is a step 1 of several that are going to be done in order to have project creation using group level custom templates run faster.
Screenshots (strongly suggested)
Does this MR meet the acceptance criteria?
Conformity
-
Changelog entry - [-] 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