DEV: add optional verbose logging to re-index job

This verbose logging can be useful when executing the job by hand
for debugging purposes

In general people will not use this
This commit is contained in:
Sam Saffron 2020-06-24 15:36:51 +10:00
parent b28d97b64a
commit dcad720a4c
No known key found for this signature in database
GPG Key ID: B9606168D2FFD9F5
1 changed files with 28 additions and 0 deletions

View File

@ -8,6 +8,8 @@ module Jobs
CLEANUP_GRACE_PERIOD ||= 1.day.ago
def execute(args)
@verbose = true if args && Hash === args && args[:verbose]
rebuild_problem_topics
rebuild_problem_posts
rebuild_problem_categories
@ -15,11 +17,17 @@ module Jobs
rebuild_problem_tags
clean_post_search_data
clean_topic_search_data
@verbose = nil
end
def rebuild_problem_categories(limit: 500)
category_ids = load_problem_category_ids(limit)
if @verbose
puts "rebuilding #{category_ids.length} categories"
end
category_ids.each do |id|
category = Category.find_by(id: id)
SearchIndexer.index(category, force: true) if category
@ -29,6 +37,10 @@ module Jobs
def rebuild_problem_users(limit: 10000)
user_ids = load_problem_user_ids(limit)
if @verbose
puts "rebuilding #{user_ids.length} users"
end
user_ids.each do |id|
user = User.find_by(id: id)
SearchIndexer.index(user, force: true) if user
@ -38,6 +50,10 @@ module Jobs
def rebuild_problem_topics(limit: 10000)
topic_ids = load_problem_topic_ids(limit)
if @verbose
puts "rebuilding #{topic_ids.length} topics"
end
topic_ids.each do |id|
topic = Topic.find_by(id: id)
SearchIndexer.index(topic, force: true) if topic
@ -47,6 +63,10 @@ module Jobs
def rebuild_problem_posts(limit: 20000, indexer: SearchIndexer)
post_ids = load_problem_post_ids(limit)
if @verbose
puts "rebuilding #{post_ids.length} posts"
end
post_ids.each do |id|
# could be deleted while iterating through batch
if post = Post.find_by(id: id)
@ -58,6 +78,10 @@ module Jobs
def rebuild_problem_tags(limit: 10000)
tag_ids = load_problem_tag_ids(limit)
if @verbose
puts "rebuilding #{tag_ids.length} tags"
end
tag_ids.each do |id|
tag = Tag.find_by(id: id)
SearchIndexer.index(tag, force: true) if tag
@ -67,6 +91,8 @@ module Jobs
private
def clean_post_search_data
puts "cleaning up post search data" if @verbose
PostSearchData
.joins("LEFT JOIN posts p ON p.id = post_search_data.post_id")
.where("p.raw = ''")
@ -90,6 +116,8 @@ module Jobs
end
def clean_topic_search_data
puts "cleaning up topic search data" if @verbose
DB.exec(<<~SQL, deleted_at: CLEANUP_GRACE_PERIOD)
DELETE FROM topic_search_data
WHERE topic_id IN (