Skip to content

Ensure `retry_lease` option is true when merge is happening in async worker

The following discussion from !128202 (merged) should be addressed:

  • @stanhu started a discussion: (+1 comment)

    I'm wondering if we should always enable this flag whenever the refresh is done in a background job:

    % git grep "MergeRequests::MergeService.new"
    app/graphql/mutations/merge_requests/accept.rb:        merge_service = ::MergeRequests::MergeService.new(project: project, current_user: current_user, params: merge_params)
    app/workers/merge_worker.rb:    MergeRequests::MergeService.new(project: merge_request.target_project, current_user: current_user, params: params)
    ee/app/services/merge_trains/refresh_merge_request_service.rb:      MergeRequests::MergeService.new(project: project, current_user: merge_user, params: merge_request.merge_params.with_indifferent_access)

    Two questions that are separate from this merge request:

    1. Should app/workers/merge_worker.rb also have check_mergeability_retry_lease set to true?
    2. Should the GraphQL call above should not be calling MergeService directly but rather scheduling a MergeWorker job? @.luke @dskim_gitlab What do you think?

Availability and Testing

Regression testing, please ensure associated MR is labelled with pipeline:run-all-e2e and e2e:package-and-test job is passing (MR-related tests).

Edited by Jay McCure