diff --git a/config/feature_flags/development/bulk_add_on_assignment_refresh_worker.yml b/config/feature_flags/development/bulk_add_on_assignment_refresh_worker.yml new file mode 100644 index 0000000000000000000000000000000000000000..b87026cb2df81203f6292042f85f22022df3b1cd --- /dev/null +++ b/config/feature_flags/development/bulk_add_on_assignment_refresh_worker.yml @@ -0,0 +1,8 @@ +--- +name: bulk_add_on_assignment_refresh_worker +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/134223 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/428258 +milestone: '16.5' +type: development +group: group::purchase +default_enabled: false diff --git a/config/initializers/1_settings.rb b/config/initializers/1_settings.rb index a35ab8f1a89b29ae8f74311a9c4fdd1d250a509d..e2e5c37aa4362857ed420a7f1a33099dbb9d14e4 100644 --- a/config/initializers/1_settings.rb +++ b/config/initializers/1_settings.rb @@ -887,7 +887,7 @@ Settings.cron_jobs['gitlab_subscriptions_schedule_refresh_seats_worker']['job_class'] = 'GitlabSubscriptions::ScheduleRefreshSeatsWorker' Settings.cron_jobs['gitlab_subscriptions_add_on_purchases_schedule_bulk_refresh_user_assignments_worker'] ||= {} Settings.cron_jobs['gitlab_subscriptions_add_on_purchases_schedule_bulk_refresh_user_assignments_worker']['cron'] ||= "0 */4 * * *" - Settings.cron_jobs['gitlab_subscriptions_add_on_purchases_schedule_bulk_refresh_user_assignments_worker']['job_class'] = 'GitlabSubscriptions::AddOnPurchases::BulkRefreshUserAssignmentsWorker' + Settings.cron_jobs['gitlab_subscriptions_add_on_purchases_schedule_bulk_refresh_user_assignments_worker']['job_class'] = 'GitlabSubscriptions::AddOnPurchases::ScheduleBulkRefreshUserAssignmentsWorker' Settings.cron_jobs['click_house_events_sync_worker'] ||= {} Settings.cron_jobs['click_house_events_sync_worker']['cron'] ||= "*/3 * * * *" Settings.cron_jobs['click_house_events_sync_worker']['job_class'] = 'ClickHouse::EventsSyncWorker' diff --git a/ee/app/workers/gitlab_subscriptions/add_on_purchases/bulk_refresh_user_assignments_worker.rb b/ee/app/workers/gitlab_subscriptions/add_on_purchases/bulk_refresh_user_assignments_worker.rb index 5357f492a4b1bc7061a9242ae684ce06bb4ee2da..4a4e52d4c8d4d2dc27d1ce0576070ed2ebc3c825 100644 --- a/ee/app/workers/gitlab_subscriptions/add_on_purchases/bulk_refresh_user_assignments_worker.rb +++ b/ee/app/workers/gitlab_subscriptions/add_on_purchases/bulk_refresh_user_assignments_worker.rb @@ -15,7 +15,7 @@ class BulkRefreshUserAssignmentsWorker MAX_RUNNING_JOBS = 10 def perform_work - return unless Feature.enabled?(:hamilton_seat_management) + return unless Feature.enabled?(:bulk_add_on_assignment_refresh_worker) return unless ::Gitlab::CurrentSettings.should_check_namespace_plan? @@ -27,6 +27,9 @@ def perform_work end def remaining_work_count(*_args) + # make sure we stop enqueuing these jobs when the FF is disabled, as the DB column will no longer get updated + return 0 unless Feature.enabled?(:bulk_add_on_assignment_refresh_worker) + add_on_purchases_requiring_refresh(max_running_jobs + 1).count end diff --git a/ee/app/workers/gitlab_subscriptions/add_on_purchases/schedule_bulk_refresh_user_assignments_worker.rb b/ee/app/workers/gitlab_subscriptions/add_on_purchases/schedule_bulk_refresh_user_assignments_worker.rb index d24d2b1b520b5d860b2f59c19a34730545412009..b577c675ca0f88485ad6ac6a87b873c25bb6d755 100644 --- a/ee/app/workers/gitlab_subscriptions/add_on_purchases/schedule_bulk_refresh_user_assignments_worker.rb +++ b/ee/app/workers/gitlab_subscriptions/add_on_purchases/schedule_bulk_refresh_user_assignments_worker.rb @@ -13,7 +13,7 @@ class ScheduleBulkRefreshUserAssignmentsWorker idempotent! def perform - return unless Feature.enabled?(:hamilton_seat_management) + return unless Feature.enabled?(:bulk_add_on_assignment_refresh_worker) return unless ::Gitlab::CurrentSettings.should_check_namespace_plan? diff --git a/ee/spec/workers/gitlab_subscriptions/add_on_purchases/bulk_refresh_user_assignments_worker_spec.rb b/ee/spec/workers/gitlab_subscriptions/add_on_purchases/bulk_refresh_user_assignments_worker_spec.rb index 132fb5a6039c7392d9304a10847be8651877784a..d954e6ef1048e62de851f0188361047752c0c9ae 100644 --- a/ee/spec/workers/gitlab_subscriptions/add_on_purchases/bulk_refresh_user_assignments_worker_spec.rb +++ b/ee/spec/workers/gitlab_subscriptions/add_on_purchases/bulk_refresh_user_assignments_worker_spec.rb @@ -70,9 +70,9 @@ it_behaves_like 'returns early' end - context 'when feature flag hamilton_seat_management is disabled' do + context 'when feature flag bulk_add_on_assignment_refresh_worker is disabled' do before do - stub_feature_flags(hamilton_seat_management: false) + stub_feature_flags(bulk_add_on_assignment_refresh_worker: false) end it_behaves_like 'returns early' @@ -99,11 +99,23 @@ end context 'when there is remaining work' do - it 'returns correct amount' do + before do stub_const("#{described_class}::MAX_RUNNING_JOBS", 1) + end + it 'returns correct amount' do expect(subject.remaining_work_count).to eq(2) end + + context 'when the bulk_add_on_assignment_refresh_worker FF is disabled' do + before do + stub_feature_flags(bulk_add_on_assignment_refresh_worker: false) + end + + it 'returns zero' do + expect(subject.remaining_work_count).to eq(0) + end + end end context 'when there is no remaining work' do diff --git a/ee/spec/workers/gitlab_subscriptions/add_on_purchases/schedule_bulk_refresh_user_assignments_worker_spec.rb b/ee/spec/workers/gitlab_subscriptions/add_on_purchases/schedule_bulk_refresh_user_assignments_worker_spec.rb index f6e8422701dd2096f88536df430dd6f2f4cdf0bb..717a867b3ae5f970f2d2d2b6843e619f5974b75d 100644 --- a/ee/spec/workers/gitlab_subscriptions/add_on_purchases/schedule_bulk_refresh_user_assignments_worker_spec.rb +++ b/ee/spec/workers/gitlab_subscriptions/add_on_purchases/schedule_bulk_refresh_user_assignments_worker_spec.rb @@ -34,7 +34,7 @@ context 'when feature flag hamilton_seat_management is disabled' do before do - stub_feature_flags(hamilton_seat_management: false) + stub_feature_flags(bulk_add_on_assignment_refresh_worker: false) end it 'does not schedule the worker' do