From 31d878a69d1e14660612d1729eece36827034461 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matija=20=C4=8Cupi=C4=87?= <matteeyah@gmail.com> Date: Tue, 9 Mar 2021 10:56:23 +0000 Subject: [PATCH] Reduce DB load when resetting CI minute notifications --- ...c-bug-reduce-ci-minute-namespace-notification-db-load.yml | 5 +++++ ee/app/models/ee/namespace.rb | 5 +++++ ee/app/services/ci/minutes/batch_reset_service.rb | 5 +++-- 3 files changed, 13 insertions(+), 2 deletions(-) create mode 100644 changelogs/unreleased/mc-bug-reduce-ci-minute-namespace-notification-db-load.yml diff --git a/changelogs/unreleased/mc-bug-reduce-ci-minute-namespace-notification-db-load.yml b/changelogs/unreleased/mc-bug-reduce-ci-minute-namespace-notification-db-load.yml new file mode 100644 index 0000000000000..9707dc4623e32 --- /dev/null +++ b/changelogs/unreleased/mc-bug-reduce-ci-minute-namespace-notification-db-load.yml @@ -0,0 +1,5 @@ +--- +title: Reduce DB load when resetting CI minute notifications. +merge_request: 55765 +author: +type: performance diff --git a/ee/app/models/ee/namespace.rb b/ee/app/models/ee/namespace.rb index 49e40631a013c..295387ba4550d 100644 --- a/ee/app/models/ee/namespace.rb +++ b/ee/app/models/ee/namespace.rb @@ -69,6 +69,11 @@ module Namespace where("EXISTS (?)", matcher) end + scope :without_last_ci_minutes_notification, -> do + where.not(last_ci_minutes_notification_at: nil) + .or(where.not(last_ci_minutes_usage_notification_level: nil)) + end + delegate :shared_runners_seconds, :shared_runners_seconds_last_reset, to: :namespace_statistics, allow_nil: true delegate :additional_purchased_storage_size, :additional_purchased_storage_size=, diff --git a/ee/app/services/ci/minutes/batch_reset_service.rb b/ee/app/services/ci/minutes/batch_reset_service.rb index 98c8d7464d840..5761268ed8b83 100644 --- a/ee/app/services/ci/minutes/batch_reset_service.rb +++ b/ee/app/services/ci/minutes/batch_reset_service.rb @@ -111,9 +111,10 @@ def reset_shared_runners_seconds!(namespaces) end def reset_ci_minutes_notifications!(namespaces) - namespaces.update_all( + namespaces.without_last_ci_minutes_notification.update_all( last_ci_minutes_notification_at: nil, - last_ci_minutes_usage_notification_level: nil) + last_ci_minutes_usage_notification_level: nil + ) end end end -- GitLab