FIX: Remove legacy topic timer code (#13544)

The new topic timer backend code introduced six months ago
in 0034cbd is now used instead of this legacy code. It can be safely removed
now.
This commit is contained in:
Martin Brennan 2021-06-29 09:16:25 +10:00 committed by GitHub
parent 69e557be66
commit 03338f9086
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 0 additions and 161 deletions

View File

@ -1,31 +0,0 @@
# frozen_string_literal: true
module Jobs
class TopicReminder < ::Jobs::Base
def execute(args)
# noop, TODO(martin 2021-03-11): Remove this after timers migrated and outstanding jobs cancelled
return
topic_timer = TopicTimer.find_by(id: args[:topic_timer_id])
topic = topic_timer&.topic
user = topic_timer&.user
if topic_timer.blank? || topic.blank? || user.blank? ||
topic_timer.execute_at > Time.zone.now
return
end
user.notifications.create!(
notification_type: Notification.types[:topic_reminder],
topic_id: topic.id,
post_number: 1,
data: { topic_title: topic.title, display_username: user.username }.to_json
)
topic_timer.trash!(Discourse.system_user)
end
end
end

View File

@ -36,10 +36,6 @@ class TopicTimer < ActiveRecord::Base
if (will_save_change_to_execute_at? &&
!attribute_in_database(:execute_at).nil?) ||
will_save_change_to_user_id?
# TODO(martin - 2021-05-01) - Remove this backwards compatability for outstanding
# jobs once they have all been run and after Jobs::TopicTimerEnqueuer is in place
self.send("cancel_auto_#{self.class.types[status_type]}_job")
end
end
@ -67,24 +63,9 @@ class TopicTimer < ActiveRecord::Base
end
def enqueue_typed_job(time: nil)
return if typed_job_scheduled?
self.send("schedule_auto_#{status_type_name}_job")
end
# TODO(martin - 2021-05-01) - Remove this backwards compatability for outstanding
# jobs once they have all been run and after Jobs::TopicTimerEnqueuer is in place
def typed_job_scheduled?
scheduled = Jobs.scheduled_for(
TopicTimer.type_job_map[status_type_name], topic_timer_id: id
).any?
if [:close, :silent_close, :open].include?(status_type_name)
return scheduled || Jobs.scheduled_for(:toggle_topic_closed, topic_timer_id: id).any?
end
scheduled
end
def self.type_job_map
{
close: :close_topic,
@ -165,48 +146,6 @@ class TopicTimer < ActiveRecord::Base
self.status_type.to_i == TopicTimer.types[:publish_to_category]
end
# TODO(martin - 2021-05-01) - Remove cancels for toggle_topic_closed once topic timer revamp completed.
def cancel_auto_close_job
Jobs.cancel_scheduled_job(:toggle_topic_closed, topic_timer_id: id)
Jobs.cancel_scheduled_job(:close_topic, topic_timer_id: id)
end
# TODO(martin - 2021-05-01) - Remove cancels for toggle_topic_closed once topic timer revamp completed.
def cancel_auto_open_job
Jobs.cancel_scheduled_job(:toggle_topic_closed, topic_timer_id: id)
Jobs.cancel_scheduled_job(:open_topic, topic_timer_id: id)
end
# TODO(martin - 2021-05-01) - Remove cancels for toggle_topic_closed once topic timer revamp completed.
def cancel_auto_silent_close_job
Jobs.cancel_scheduled_job(:toggle_topic_closed, topic_timer_id: id)
Jobs.cancel_scheduled_job(:close_topic, topic_timer_id: id)
end
def cancel_auto_publish_to_category_job
Jobs.cancel_scheduled_job(TopicTimer.type_job_map[:publish_to_category], topic_timer_id: id)
end
def cancel_auto_delete_job
Jobs.cancel_scheduled_job(TopicTimer.type_job_map[:delete], topic_timer_id: id)
end
def cancel_auto_reminder_job
Jobs.cancel_scheduled_job(TopicTimer.type_job_map[:reminder], topic_timer_id: id)
end
def cancel_auto_bump_job
Jobs.cancel_scheduled_job(TopicTimer.type_job_map[:bump], topic_timer_id: id)
end
def cancel_auto_delete_replies_job
Jobs.cancel_scheduled_job(TopicTimer.type_job_map[:delete_replies], topic_timer_id: id)
end
def cancel_auto_clear_slow_mode_job
Jobs.cancel_scheduled_job(TopicTimer.type_job_map[:clear_slow_mode], topic_timer_id: id)
end
def schedule_auto_delete_replies_job
Jobs.enqueue(TopicTimer.type_job_map[:delete_replies], topic_timer_id: id)
end
@ -235,10 +174,6 @@ class TopicTimer < ActiveRecord::Base
Jobs.enqueue(TopicTimer.type_job_map[:delete], topic_timer_id: id)
end
def schedule_auto_reminder_job
# noop, TODO(martin 2021-03-11): Remove this after timers migrated and outstanding jobs cancelled
end
def schedule_auto_clear_slow_mode_job
Jobs.enqueue(TopicTimer.type_job_map[:clear_slow_mode], topic_timer_id: id)
end

View File

@ -48,44 +48,6 @@ RSpec.describe TopicTimer, type: :model do
end
end
describe "#typed_job_scheduled?" do
let(:scheduled_jobs) { Sidekiq::ScheduledSet.new }
after do
scheduled_jobs.clear
end
it "returns true if the job is scheduled" do
Sidekiq::Testing.disable! do
scheduled_jobs.clear
Jobs.enqueue_at(3.hours.from_now, :close_topic, topic_timer_id: topic_timer.id)
expect(topic_timer.typed_job_scheduled?).to eq(true)
end
end
it "returns false if the job is not already scheduled" do
Sidekiq::Testing.disable! do
scheduled_jobs.clear
expect(topic_timer.typed_job_scheduled?).to eq(false)
end
end
it "returns true if the toggle_topic_closed job is scheduled for close,open,silent_close types" do
Sidekiq::Testing.disable! do
scheduled_jobs.clear
topic_timer1 = Fabricate(:topic_timer, status_type: TopicTimer.types[:close])
Jobs.enqueue_at(3.hours.from_now, :toggle_topic_closed, topic_timer_id: topic_timer1.id)
topic_timer2 = Fabricate(:topic_timer, status_type: TopicTimer.types[:open])
Jobs.enqueue_at(3.hours.from_now, :toggle_topic_closed, topic_timer_id: topic_timer2.id)
topic_timer3 = Fabricate(:topic_timer, status_type: TopicTimer.types[:silent_close])
Jobs.enqueue_at(3.hours.from_now, :toggle_topic_closed, topic_timer_id: topic_timer3.id)
expect(topic_timer1.typed_job_scheduled?).to eq(true)
expect(topic_timer2.typed_job_scheduled?).to eq(true)
expect(topic_timer3.typed_job_scheduled?).to eq(true)
end
end
end
describe '#execute_at' do
describe 'when #execute_at is greater than #created_at' do
it 'should be valid' do
@ -146,38 +108,11 @@ RSpec.describe TopicTimer, type: :model do
describe 'when #execute_at and #user_id are not changed' do
it 'should not schedule another to update topic' do
Jobs.expects(:enqueue_at).never
Jobs.expects(:cancel_scheduled_job).never
topic_timer.update!(topic: Fabricate(:topic))
end
end
describe 'when #execute_at value is changed' do
it 'reschedules the job' do
Jobs.expects(:cancel_scheduled_job).with(
:toggle_topic_closed, topic_timer_id: topic_timer.id
)
Jobs.expects(:cancel_scheduled_job).with(
:close_topic, topic_timer_id: topic_timer.id
)
topic_timer.update!(execute_at: 3.days.from_now, created_at: Time.zone.now)
end
end
describe 'when user is changed' do
it 'should update the job' do
Jobs.expects(:cancel_scheduled_job).with(
:toggle_topic_closed, topic_timer_id: topic_timer.id
)
Jobs.expects(:cancel_scheduled_job).with(
:close_topic, topic_timer_id: topic_timer.id
)
topic_timer.update!(user: admin)
end
end
describe 'when a open topic status update is created for an open topic' do
fab!(:topic) { Fabricate(:topic, closed: false) }
fab!(:topic_timer) do