From abeb782a9417a8738dbfee60b36c88539fefec47 Mon Sep 17 00:00:00 2001 From: Vijay Hawoldar <vhawoldar@gitlab.com> Date: Tue, 28 Feb 2023 17:30:10 +0000 Subject: [PATCH] Adjust GitlabSubscription scope params In order to effectively refresh subscriptions once per day we look for subscriptions that have not been refreshed in over 18 hours to account for the last enqueued job. --- ee/app/models/gitlab_subscription.rb | 4 +++- ee/spec/models/gitlab_subscription_spec.rb | 8 ++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/ee/app/models/gitlab_subscription.rb b/ee/app/models/gitlab_subscription.rb index 87674076fec00..08ef366f03815 100644 --- a/ee/app/models/gitlab_subscription.rb +++ b/ee/app/models/gitlab_subscription.rb @@ -44,8 +44,10 @@ class GitlabSubscription < ApplicationRecord end scope :requiring_seat_refresh, -> (limit) do + # look for subscriptions that have not been refreshed in more than + # 18 hours (catering for 6-hourly refresh schedule) with_a_paid_hosted_plan - .where("last_seat_refresh_at < ? OR last_seat_refresh_at IS NULL", 24.hours.ago) + .where("last_seat_refresh_at < ? OR last_seat_refresh_at IS NULL", 18.hours.ago) .limit(limit) end diff --git a/ee/spec/models/gitlab_subscription_spec.rb b/ee/spec/models/gitlab_subscription_spec.rb index ae18d252b9d45..68f78972bd6b1 100644 --- a/ee/spec/models/gitlab_subscription_spec.rb +++ b/ee/spec/models/gitlab_subscription_spec.rb @@ -68,10 +68,12 @@ let_it_be(:ultimate_subscription) { create(:gitlab_subscription, hosted_plan: ultimate_plan, last_seat_refresh_at: nil) } let_it_be(:ultimate_subscription_12_hours) { create(:gitlab_subscription, hosted_plan: ultimate_plan, last_seat_refresh_at: 12.hours.ago) } let_it_be(:ultimate_subscription_2_days) { create(:gitlab_subscription, hosted_plan: ultimate_plan, last_seat_refresh_at: 2.days.ago) } + let_it_be(:ultimate_subscription_24_hours) { create(:gitlab_subscription, hosted_plan: ultimate_plan, last_seat_refresh_at: 24.hours.ago) } let_it_be(:premium_subscription) { create(:gitlab_subscription, hosted_plan: premium_plan, last_seat_refresh_at: nil) } let_it_be(:premium_subscription_12_hours) { create(:gitlab_subscription, hosted_plan: premium_plan, last_seat_refresh_at: 12.hours.ago) } let_it_be(:premium_subscription_2_days) { create(:gitlab_subscription, hosted_plan: premium_plan, last_seat_refresh_at: 2.days.ago) } + let_it_be(:premium_subscription_24_hours) { create(:gitlab_subscription, hosted_plan: premium_plan, last_seat_refresh_at: 24.hours.ago) } let_it_be(:free_subscription) { create(:gitlab_subscription, :free, last_seat_refresh_at: 2.days.ago) } let_it_be(:trial_subscription) { create(:gitlab_subscription, hosted_plan: ultimate_plan, trial: true, last_seat_refresh_at: 2.days.ago) } @@ -80,11 +82,13 @@ matching_subscriptions = [ ultimate_subscription, ultimate_subscription_2_days, + ultimate_subscription_24_hours, premium_subscription, - premium_subscription_2_days + premium_subscription_2_days, + premium_subscription_24_hours ] - expect(described_class.requiring_seat_refresh(4)) + expect(described_class.requiring_seat_refresh(6)) .to match_array(matching_subscriptions) end -- GitLab