1# frozen_string_literal: true 2 3class MergeWorker # rubocop:disable Scalability/IdempotentWorker 4 include ApplicationWorker 5 6 data_consistency :always 7 8 sidekiq_options retry: 3 9 10 feature_category :source_code_management 11 urgency :high 12 weight 5 13 loggable_arguments 2 14 idempotent! 15 16 deduplicate :until_executed, including_scheduled: true 17 18 def perform(merge_request_id, current_user_id, params) 19 params = params.with_indifferent_access 20 21 begin 22 current_user = User.find(current_user_id) 23 merge_request = MergeRequest.find(merge_request_id) 24 rescue ActiveRecord::RecordNotFound 25 return 26 end 27 28 MergeRequests::MergeService.new(project: merge_request.target_project, current_user: current_user, params: params) 29 .execute(merge_request) 30 end 31end 32