Class: MergeRequests::CloseIssueWorker
- Inherits:
-
Object
- Object
- MergeRequests::CloseIssueWorker
- Includes:
- ApplicationWorker
- Defined in:
- app/workers/merge_requests/close_issue_worker.rb
Constant Summary
Constants included from ApplicationWorker
ApplicationWorker::LOGGING_EXTRA_KEY, ApplicationWorker::SAFE_PUSH_BULK_LIMIT
Constants included from Gitlab::Loggable
Constants included from WorkerAttributes
WorkerAttributes::DEFAULT_DATA_CONSISTENCY, WorkerAttributes::DEFAULT_DATA_CONSISTENCY_PER_DB, WorkerAttributes::DEFAULT_DEFER_DELAY, WorkerAttributes::LOAD_BALANCED_DATA_CONSISTENCIES, WorkerAttributes::NAMESPACE_WEIGHTS, WorkerAttributes::VALID_DATA_CONSISTENCIES, WorkerAttributes::VALID_RESOURCE_BOUNDARIES, WorkerAttributes::VALID_URGENCIES
Instance Method Summary collapse
-
#perform(project_id, user_id, issue_id, merge_request_id, params = {}) ⇒ Object
This worker only accepts ID of an Issue.
Methods included from Gitlab::Loggable
Methods included from Gitlab::SidekiqVersioning::Worker
Methods included from WorkerContext
Instance Method Details
#perform(project_id, user_id, issue_id, merge_request_id, params = {}) ⇒ Object
This worker only accepts ID of an Issue. We are intentionally using this worker to close Issues asynchronously as we only experience SQL timeouts when closing an Issue.
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'app/workers/merge_requests/close_issue_worker.rb', line 18 def perform(project_id, user_id, issue_id, merge_request_id, params = {}) project = Project.find_by_id(project_id) unless project logger.info(structured_payload(message: 'Project not found.', project_id: project_id)) return end user = User.find_by_id(user_id) unless user logger.info(structured_payload(message: 'User not found.', user_id: user_id)) return end issue = Issue.find_by_id(issue_id) unless issue logger.info(structured_payload(message: 'Issue not found.', issue_id: issue_id)) return end merge_request = MergeRequest.find_by_id(merge_request_id) unless merge_request logger.info(structured_payload(message: 'Merge request not found.', merge_request_id: merge_request_id)) return end Issues::CloseService .new(container: project, current_user: user) .execute( issue, commit: merge_request, skip_authorization: !!params.with_indifferent_access[:skip_authorization] ) end |