• Patrick Bajao's avatar
    Implement new preparing internal merge_status · 275b5988
    Patrick Bajao authored
    When we check if MR is mergeable we also check the CI pipeline.
    Since we are creating the pipeline asynchronously via
    `MergeRequests::AfterCreateService`, there's a possible race
    condition wherein the pipeline isn't created yet but we already
    checked if MR is mergeable. That can result to inaccurate outcome.
    
    To ensure that whenever we check if MR is mergeable, we introduced
    a new internal state called `preparing`. When the MR is in this
    state, it means it's still being prepared (e.g. creating a pipeline
    ) and it's not mergeable.
    
    Once the preparation is finished, we mark the MR as unchecked so
    we can check its mergeability when the user views the MR page.
    275b5988
merge_request_spec.rb 150 KB