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

Screenshots or screen recordings

Before After

How to set up and validate locally

  1. In rails console enable the feature flag
    Feature.enable(:ci_pipeline_processing_atomic_processing_service_plain_retry_lock)
  2. Run a pipeline
  3. Now, enable precompute_pending_build_args flag, as this is a related flag that we are also rolling out
    Feature.enable(:precompute_pending_build_args)
  4. 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

Merge request reports

Loading