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.rb21
1 files changed, 21 insertions, 0 deletions
diff --git a/app/workers/container_expiration_policy_worker.rb b/app/workers/container_expiration_policy_worker.rb
index 8fc139ac87c..a35ca5d184e 100644
--- a/app/workers/container_expiration_policy_worker.rb
+++ b/app/workers/container_expiration_policy_worker.rb
@@ -17,6 +17,7 @@ class ContainerExpirationPolicyWorker # rubocop:disable Scalability/IdempotentWo
process_stale_ongoing_cleanups
disable_policies_without_container_repositories
throttling_enabled? ? perform_throttled : perform_unthrottled
+ log_counts
end
private
@@ -28,6 +29,26 @@ class ContainerExpirationPolicyWorker # rubocop:disable Scalability/IdempotentWo
end
end
+ def log_counts
+ use_replica_if_available do
+ required_count = ContainerRepository.requiring_cleanup.count
+ unfinished_count = ContainerRepository.with_unfinished_cleanup.count
+
+ log_extra_metadata_on_done(:cleanup_required_count, required_count)
+ log_extra_metadata_on_done(:cleanup_unfinished_count, unfinished_count)
+ log_extra_metadata_on_done(:cleanup_total_count, required_count + unfinished_count)
+ end
+ end
+
+ # data_consistency :delayed not used as this is a cron job and those jobs are
+ # not perfomed with a delay
+ # https://gitlab.com/gitlab-org/gitlab/-/merge_requests/63635#note_603771207
+ def use_replica_if_available(&blk)
+ return yield unless ::Gitlab::Database::LoadBalancing.enable?
+
+ ::Gitlab::Database::LoadBalancing::Session.current.use_replicas_for_read_queries(&blk)
+ end
+
def process_stale_ongoing_cleanups
threshold = delete_tags_service_timeout.seconds + 30.minutes
ContainerRepository.with_stale_ongoing_cleanup(threshold.ago)