Use plain retry_lock in AtomicProcessingService (behind FF)
What does this MR do and why?
Ci::ProcessBuildService#execute is just an elaborate routing helper to
different state machine events. All state machine event callbacks are
already in transactions, so the outer transaction is redundant. By
switching to a plain retry_lock, we can benefit from the optimizations
introduced in
!225133 (merged)
This change is disabled by default, behind the feature flag
ci_pipeline_processing_atomic_processing_service_plain_retry_lock.
References
- Part of https://gitlab.com/gitlab-org/gitlab/-/work_items/589828
- Builds on !225133 (merged), being rolled out in #590057
Screenshots or screen recordings
| Before | After |
|---|---|
How to set up and validate locally
- In rails console enable the feature flag
Feature.enable(:ci_pipeline_processing_atomic_processing_service_plain_retry_lock) - Run a pipeline
- Now, enable
precompute_pending_build_argsflag, as this is a related flag that we are also rolling outFeature.enable(:precompute_pending_build_args) - Run a pipeline
Expected results: Both pipelines should run to completion
MR acceptance checklist
Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.
Edited by Hordur Freyr Yngvason