diff options
Diffstat (limited to 'app/workers/container_expiration_policy_worker.rb')
-rw-r--r-- | app/workers/container_expiration_policy_worker.rb | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/app/workers/container_expiration_policy_worker.rb b/app/workers/container_expiration_policy_worker.rb index 43dbea027f2..5ca89179099 100644 --- a/app/workers/container_expiration_policy_worker.rb +++ b/app/workers/container_expiration_policy_worker.rb @@ -9,7 +9,7 @@ class ContainerExpirationPolicyWorker # rubocop:disable Scalability/IdempotentWo InvalidPolicyError = Class.new(StandardError) - BATCH_SIZE = 1000.freeze + BATCH_SIZE = 1000 def perform throttling_enabled? ? perform_throttled : perform_unthrottled @@ -29,13 +29,15 @@ class ContainerExpirationPolicyWorker # rubocop:disable Scalability/IdempotentWo def perform_throttled try_obtain_lease do - with_runnable_policy do |policy| - ContainerExpirationPolicy.transaction do - policy.schedule_next_run! - ContainerRepository.for_project_id(policy.id) - .each_batch do |relation| - relation.update_all(expiration_policy_cleanup_status: :cleanup_scheduled) - end + unless loopless_enabled? + with_runnable_policy do |policy| + ContainerExpirationPolicy.transaction do + policy.schedule_next_run! + ContainerRepository.for_project_id(policy.id) + .each_batch do |relation| + relation.update_all(expiration_policy_cleanup_status: :cleanup_scheduled) + end + end end end @@ -75,6 +77,10 @@ class ContainerExpirationPolicyWorker # rubocop:disable Scalability/IdempotentWo Feature.enabled?(:container_registry_expiration_policies_throttling) end + def loopless_enabled? + Feature.enabled?(:container_registry_expiration_policies_loopless) + end + def lease_timeout 5.hours end |