Merge pull request #3306 from riking/badge-rescue

FIX: Don't stop the badge grant after the first failure
This commit is contained in:
Régis Hanol 2015-04-06 11:12:20 +02:00
commit 7ce2dea33e
2 changed files with 9 additions and 2 deletions

View File

@ -11,7 +11,12 @@ module Jobs
return unless SiteSetting.enable_badges return unless SiteSetting.enable_badges
Badge.all.each do |b| Badge.all.each do |b|
BadgeGranter.backfill(b) begin
BadgeGranter.backfill(b)
rescue => ex
# TODO - expose errors in UI
Discourse.handle_job_exception(ex, error_context({}, code_desc: 'Exception granting badges', extra: {badge_id: b.id}))
end
end end
BadgeGranter.revoke_ungranted_titles! BadgeGranter.revoke_ungranted_titles!

View File

@ -120,7 +120,9 @@ class BadgeGranter
user_ids = list.map{|i| i["user_ids"]}.flatten.compact.uniq user_ids = list.map{|i| i["user_ids"]}.flatten.compact.uniq
next unless post_ids.present? || user_ids.present? next unless post_ids.present? || user_ids.present?
find_by_type(type).each{|badge| backfill(badge, post_ids: post_ids, user_ids: user_ids)} find_by_type(type).each{ |badge|
backfill(badge, post_ids: post_ids, user_ids: user_ids)
}
end end
end end