diff --git a/app/models/post.rb b/app/models/post.rb index 85761df7b..f55398a5b 100644 --- a/app/models/post.rb +++ b/app/models/post.rb @@ -595,26 +595,34 @@ class Post < ActiveRecord::Base def fast_count(tags = "") tags = tags.to_s.strip - count = get_count_from_cache(tags) + if count.nil? - if tags.blank? && Danbooru.config.blank_tag_search_fast_count - count = Danbooru.config.blank_tag_search_fast_count - else - count = Post.with_timeout(500, Danbooru.config.blank_tag_search_fast_count || 1_000_000) do - Post.tag_match(tags).undeleted.count - end - end - - if count > Danbooru.config.posts_per_page * 10 - set_count_in_cache(tags, count) - end + fast_count_search(tags) end count.to_i rescue SearchError 0 end + + def fast_count_search(tags) + if tags.blank? && Danbooru.config.blank_tag_search_fast_count + count = Danbooru.config.blank_tag_search_fast_count + else + count = Post.with_timeout(500, Danbooru.config.blank_tag_search_fast_count || 1_000_000) do + Post.tag_match(tags).undeleted.count + end + end + + if count == 0 + count = Post.tag_match(tags).undeleted.count + end + + if count > Danbooru.config.posts_per_page * 10 + set_count_in_cache(tags, count) + end + end end module CacheMethods diff --git a/script/donmai/delayed_job_count b/script/donmai/delayed_job_count new file mode 100755 index 000000000..1a16829e6 --- /dev/null +++ b/script/donmai/delayed_job_count @@ -0,0 +1,3 @@ +#!/bin/bash + +psql -hdbserver -c 'select count(*) from delayed_jobs' -Pt -A danbooru2 > /tmp/delayed_job_count