Fix infinite loop in AccountsStatusesCleanupScheduler (#24840)
2 files changed, 15 insertions(+), 0 deletions(-) M app/workers/scheduler/accounts_statuses_cleanup_scheduler.rb M spec/workers/scheduler/accounts_statuses_cleanup_scheduler_spec.rb
M app/workers/scheduler/accounts_statuses_cleanup_scheduler.rb => app/workers/scheduler/accounts_statuses_cleanup_scheduler.rb +1 -0
@@ 79,6 79,7 @@ class Scheduler::AccountsStatusesCleanupScheduler # and start back after the last processed account otherwise break if budget.zero? || (num_processed_accounts.zero? && !full_iteration) full_iteration = false unless first_iteration first_iteration = false end end
M spec/workers/scheduler/accounts_statuses_cleanup_scheduler_spec.rb => spec/workers/scheduler/accounts_statuses_cleanup_scheduler_spec.rb +14 -0
@@ 143,6 143,20 @@ describe Scheduler::AccountsStatusesCleanupScheduler do expect { subject.perform }.to change { Status.count }.by(-30) end end context 'when there is no work to be done' do let(:process_set_stub) { [{ 'concurrency' => 400, 'queues' => %w(push default) }] } before do stub_const 'Scheduler::AccountsStatusesCleanupScheduler::MAX_BUDGET', 400 subject.perform end it 'does not get stuck' do expect(subject.compute_budget).to eq(400) expect { subject.perform }.to_not change { Status.count } end end end end end