summaryrefslogtreecommitdiff
path: root/app/workers/container_expiration_policy_worker.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/workers/container_expiration_policy_worker.rb')
-rw-r--r--app/workers/container_expiration_policy_worker.rb27
1 files changed, 11 insertions, 16 deletions
diff --git a/app/workers/container_expiration_policy_worker.rb b/app/workers/container_expiration_policy_worker.rb
index dec13485d13..b15d1bf90bd 100644
--- a/app/workers/container_expiration_policy_worker.rb
+++ b/app/workers/container_expiration_policy_worker.rb
@@ -14,11 +14,18 @@ class ContainerExpirationPolicyWorker # rubocop:disable Scalability/IdempotentWo
BATCH_SIZE = 1000
def perform
+ process_stale_ongoing_cleanups
throttling_enabled? ? perform_throttled : perform_unthrottled
end
private
+ def process_stale_ongoing_cleanups
+ threshold = delete_tags_service_timeout.seconds + 30.minutes
+ ContainerRepository.with_stale_ongoing_cleanup(threshold.ago)
+ .update_all(expiration_policy_cleanup_status: :cleanup_unfinished)
+ end
+
def perform_unthrottled
with_runnable_policy(preloaded: true) do |policy|
with_context(project: policy.project,
@@ -31,18 +38,6 @@ class ContainerExpirationPolicyWorker # rubocop:disable Scalability/IdempotentWo
def perform_throttled
try_obtain_lease do
- 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
-
ContainerExpirationPolicies::CleanupContainerRepositoryWorker.perform_with_capacity
end
end
@@ -79,11 +74,11 @@ 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
+
+ def delete_tags_service_timeout
+ ::Gitlab::CurrentSettings.current_application_settings.container_registry_delete_tags_service_timeout || 0
+ end
end