FIX: Jobs.cancel_scheduled_job wasn't working anymore due to our move to using multiple queues
FIX: Don't queue more than 1 'update_gravatar' job per user
This commit is contained in:
parent
b782a01148
commit
b7c16991f7
|
@ -244,7 +244,10 @@ module Jobs
|
|||
def self.scheduled_for(job_name, params={})
|
||||
params = params.with_indifferent_access
|
||||
job_class = "Jobs::#{job_name.to_s.camelcase}"
|
||||
Sidekiq::ScheduledSet.new.select do |scheduled_job|
|
||||
|
||||
scheduled_jobs = []
|
||||
Sidekiq::Queue.all.each do |queue|
|
||||
queue.each do |scheduled_job|
|
||||
if scheduled_job.klass.to_s == job_class
|
||||
matched = true
|
||||
job_params = scheduled_job.item["args"][0].with_indifferent_access
|
||||
|
@ -254,12 +257,13 @@ module Jobs
|
|||
break
|
||||
end
|
||||
end
|
||||
matched
|
||||
else
|
||||
false
|
||||
scheduled_jobs << scheduled_job if matched
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
scheduled_jobs
|
||||
end
|
||||
end
|
||||
|
||||
Dir["#{Rails.root}/app/jobs/onceoff/*.rb"].each {|file| require_dependency file }
|
||||
|
|
|
@ -7,9 +7,10 @@ module Jobs
|
|||
UserAvatar.includes(:user)
|
||||
.where(last_gravatar_download_attempt: nil)
|
||||
.order("users.last_posted_at DESC")
|
||||
.limit(5000)
|
||||
.each do |u|
|
||||
u.user.refresh_avatar
|
||||
.find_in_batches(batch_size: 5000) do |user_avatars|
|
||||
user_avatars.each do |user_avatar|
|
||||
user_avatar.user.refresh_avatar
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -753,6 +753,7 @@ class User < ActiveRecord::Base
|
|||
avatar = user_avatar || create_user_avatar
|
||||
|
||||
if SiteSetting.automatically_download_gravatars? && !avatar.last_gravatar_download_attempt
|
||||
Jobs.cancel_scheduled_job(:update_gravatar, user_id: self.id, avatar_id: avatar.id)
|
||||
Jobs.enqueue(:update_gravatar, user_id: self.id, avatar_id: avatar.id)
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in New Issue