1# frozen_string_literal: true 2 3class MergeRequestMergeabilityCheckWorker 4 include ApplicationWorker 5 6 data_consistency :always 7 8 sidekiq_options retry: 3 9 10 feature_category :code_review 11 idempotent! 12 13 def logger 14 @logger ||= Sidekiq.logger 15 end 16 17 def perform(merge_request_id) 18 merge_request = MergeRequest.find_by_id(merge_request_id) 19 20 unless merge_request 21 logger.error(worker: self.class.name, message: "Failed to find merge request", merge_request_id: merge_request_id) 22 return 23 end 24 25 result = 26 ::MergeRequests::MergeabilityCheckService 27 .new(merge_request) 28 .execute(recheck: false, retry_lease: false) 29 30 logger.error(worker: self.class.name, message: "Failed to check mergeability of merge request: #{result.message}", merge_request_id: merge_request_id) if result.error? 31 end 32end 33