Class: Issues::RebalancingWorker
- Inherits:
-
Object
- Object
- Issues::RebalancingWorker
- Includes:
- ApplicationWorker
- Defined in:
- app/workers/issues/rebalancing_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_DEFER_DELAY, WorkerAttributes::NAMESPACE_WEIGHTS, WorkerAttributes::VALID_DATA_CONSISTENCIES, WorkerAttributes::VALID_RESOURCE_BOUNDARIES, WorkerAttributes::VALID_URGENCIES
Instance Method Summary collapse
Methods included from Gitlab::Loggable
Methods included from Gitlab::SidekiqVersioning::Worker
Methods included from WorkerContext
Instance Method Details
#perform(ignore = nil, project_id = nil, root_namespace_id = nil) ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'app/workers/issues/rebalancing_worker.rb', line 16 def perform(ignore = nil, project_id = nil, root_namespace_id = nil) # we need to have exactly one of the project_id and root_namespace_id params be non-nil raise ArgumentError, "Expected only one of the params project_id: #{project_id} and root_namespace_id: #{root_namespace_id}" if project_id && root_namespace_id return if project_id.nil? && root_namespace_id.nil? return if ::Gitlab::Issues::Rebalancing::State.rebalance_recently_finished?(project_id, root_namespace_id) # pull the projects collection to be rebalanced either the project if namespace is not a group(i.e. user namespace) # or the root namespace, this also makes the worker backward compatible with previous version where a project_id was # passed as the param projects_to_rebalance = projects_collection(project_id, root_namespace_id) # something might have happened with the namespace between scheduling the worker and actually running it, # maybe it was removed. if projects_to_rebalance.blank? Gitlab::ErrorTracking.log_exception( ArgumentError.new("Projects to be rebalanced not found for arguments: project_id #{project_id}, root_namespace_id: #{root_namespace_id}"), { project_id: project_id, root_namespace_id: root_namespace_id }) return end Issues::RelativePositionRebalancingService.new(projects_to_rebalance).execute rescue Issues::RelativePositionRebalancingService::TooManyConcurrentRebalances => e Gitlab::ErrorTracking.log_exception(e, root_namespace_id: root_namespace_id, project_id: project_id) end |