Skip to content

Commit 84435d4

Browse files
authored
Merge pull request #1996 from codidact/art/job-logs
2 parents 0e88121 + f944c17 commit 84435d4

10 files changed

Lines changed: 79 additions & 101 deletions

app/jobs/application_job.rb

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,16 @@
11
class ApplicationJob < ActiveJob::Base
22
# Automatically retry jobs that encountered a deadlock
3-
# retry_on ActiveRecord::Deadlocked
3+
retry_on ActiveRecord::Deadlocked
44

55
# Most jobs are safe to ignore if the underlying records are no longer available
6-
# discard_on ActiveJob::DeserializationError
6+
discard_on ActiveJob::DeserializationError
7+
8+
def initialize
9+
@job_id = SecureRandom.uuid
10+
super
11+
end
12+
13+
def logger
14+
Rails.job_logger.tagged(self.class.name, @job_id)
15+
end
716
end

app/jobs/auto_close_complaints_job.rb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@ class AutoCloseComplaintsJob < ApplicationJob
44
def perform(*_args)
55
complaints = Complaint.where(status: 'reviewed')
66
.where(Arel.sql('status_updated_at <= ?', 14.days.ago))
7-
complaints.each do |complaint|
7+
statuses = complaints.map do |complaint|
88
complaint.update_status 'closed'
99
end
10+
successful = statuses.compact_blank.size
11+
logger.info "Found #{complaints.size} inactive complaints, successfully closed #{successful} of them."
1012
end
1113
end

app/jobs/clean_up_new_thread_followers_job.rb

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,14 @@ def perform
1515
duplicate = followers.first
1616
result = duplicate.destroy
1717

18-
unless result
19-
puts "failed to destroy new thread follower duplicate \"#{duplicate.id}\""
20-
duplicate.errors.each { |e| puts e.full_message }
18+
next if result
19+
20+
logger.warn "Failed to destroy new thread follower duplicate \"#{duplicate.id}. Validations follow."
21+
duplicate.errors.full_messages.each do |msg|
22+
logger.warn msg
2123
end
2224
end
25+
26+
logger.info "Processed #{posts.size} posts."
2327
end
2428
end

app/jobs/clean_up_spammy_users_job.rb

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,22 @@ def perform(created_after: 1.month.ago)
99
.where(users: { deleted: false }).group('users.id').having('count(posts.id) > 0')
1010
.having('count(distinct if(posts.deleted = true, null, posts.id)) = 0')
1111

12+
blocked = 0
13+
1214
possible_spammers.each do |spammer|
1315
all_posts_spam = spammer.posts.all? do |post|
1416
# A post is considered spam if there are any helpful spam flags on it.
1517
post.flags.any? do |flag|
1618
flag.post_flag_type.name == "it's spam" && flag.status == 'helpful'
1719
end
1820
end
19-
if all_posts_spam
20-
spammer.block('automatic block from spam cleanup job', length: 2.years)
21-
spammer.soft_delete(User.system)
22-
end
21+
next unless all_posts_spam
22+
23+
blocked += 1
24+
spammer.block('automatic block from spam cleanup job', length: 2.years)
25+
spammer.soft_delete(User.system)
2326
end
27+
28+
logger.info "Considered #{possible_spammers.size} potential spammers, blocked #{blocked}."
2429
end
2530
end

app/jobs/clean_up_thread_followers_job.rb

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,14 @@ def perform
1515
duplicate = followers.first
1616
result = duplicate.destroy
1717

18-
unless result
19-
puts "failed to destroy thread follower duplicate \"#{duplicate.id}\""
20-
duplicate.errors.each { |e| puts e.full_message }
18+
next if result
19+
20+
logger.warn "Failed to destroy thread follower duplicate \"#{duplicate.id}. Validations follow."
21+
duplicate.errors.full_messages.each do |msg|
22+
logger.warn msg
2123
end
2224
end
25+
26+
logger.info "Processed #{threads.size} threads."
2327
end
2428
end

app/jobs/cleanup_votes_job.rb

Lines changed: 22 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,28 +3,32 @@ class CleanupVotesJob < ApplicationJob
33

44
def perform
55
Community.all.each do |c|
6-
RequestContext.community = c
7-
orphan_votes = Vote.all.reject { |v| v.post.present? }
6+
logger.tagged(c.name) do
7+
RequestContext.community = c
8+
orphan_votes = Vote.all.reject { |v| v.post.present? }
89

9-
puts "[#{c.name}] destroying #{orphan_votes.length} #{'orphan vote'.pluralize(orphan_votes.length)}"
10+
logger.info "Removing #{orphan_votes.length} #{'orphan vote'.pluralize(orphan_votes.length)}"
1011

11-
system_user = User.find(-1)
12+
system_user = User.find(-1)
1213

13-
orphan_votes.each do |v|
14-
result = v.destroy
14+
orphan_votes.each do |v|
15+
result = v.destroy
1516

16-
if result
17-
AuditLog.admin_audit(
18-
comment: "Deleted orphaned vote for user ##{v.recv_user_id} " \
19-
"on post ##{v.post_id} " \
20-
"in community ##{c.id} (#{c.name})",
21-
event_type: 'vote_delete',
22-
related: v,
23-
user: system_user
24-
)
25-
else
26-
puts "[#{c.name}] failed to destroy vote \"#{v.id}\""
27-
v.errors.each { |e| puts e.full_message }
17+
if result
18+
AuditLog.admin_audit(
19+
comment: "Deleted orphaned vote for user ##{v.recv_user_id} " \
20+
"on post ##{v.post_id} " \
21+
"in community ##{c.id} (#{c.name})",
22+
event_type: 'vote_delete',
23+
related: v,
24+
user: system_user
25+
)
26+
else
27+
logger.warn "Failed to remove vote #{v.id}. Validations follow."
28+
v.errors.full_messages.each do |msg|
29+
logger.warn msg
30+
end
31+
end
2832
end
2933
end
3034
end

app/jobs/potential_spam_profiles_job.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,7 @@ def perform
1414
UserAbility.where(community_user_id: cu_ids, ability_id: ability_ids)
1515
.update_all(is_suspended: true, suspension_message: 'This ability has been automatically suspended.')
1616
end
17+
18+
logger.info "Found #{users.size} likely spam profiles & suspended abilities."
1719
end
1820
end

app/jobs/send_summary_emails_job.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,7 @@ def perform
1515
.content_summary
1616
.deliver_later
1717
end
18+
19+
logger.info "Scheduled send of #{staff.size} emails."
1820
end
1921
end

config/initializers/job_logger.rb

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
module Rails
2+
class << self
3+
@job_logger = nil
4+
5+
def job_logger
6+
if @job_logger.nil?
7+
logger = ActiveSupport::Logger.new(Rails.root.join('log/jobs.log'))
8+
logger.level = Rails.configuration.log_level
9+
logger.formatter = ::Logger::Formatter.new
10+
@job_logger = ActiveSupport::TaggedLogging.new(logger)
11+
else
12+
@job_logger
13+
end
14+
end
15+
end
16+
end

config/initializers/new_framework_defaults_7_2.rb

Lines changed: 0 additions & 70 deletions
This file was deleted.

0 commit comments

Comments
 (0)