Fix search error when ElasticSearch is enabled but not available (#11954)

* Fallback to Database search when ES not available

* Prevent double work if ES gives 0 result

* Apply suggestion from code review
This commit is contained in:
Jeong Arm 2019-09-27 01:06:08 +09:00 committed by Eugen Rochko
parent 5034418e2c
commit 00d7bdcc2a
2 changed files with 11 additions and 10 deletions

View file

@ -42,11 +42,9 @@ class AccountSearchService < BaseService
return [] if limit_for_non_exact_results.zero?
@search_results ||= begin
if Chewy.enabled?
from_elasticsearch
else
from_database
end
results = from_elasticsearch if Chewy.enabled?
results ||= from_database
results
end
end
@ -92,6 +90,8 @@ class AccountSearchService < BaseService
ActiveRecord::Associations::Preloader.new.preload(records, :account_stat)
records
rescue Faraday::ConnectionFailed, Parslet::ParseFailed
nil
end
def reputation_score_function

View file

@ -6,11 +6,10 @@ class TagSearchService < BaseService
@offset = options[:offset].to_i
@limit = options[:limit].to_i
if Chewy.enabled?
from_elasticsearch
else
from_database
end
results = from_elasticsearch if Chewy.enabled?
results ||= from_database
results
end
private
@ -74,6 +73,8 @@ class TagSearchService < BaseService
}
TagsIndex.query(query).filter(filter).limit(@limit).offset(@offset).objects.compact
rescue Faraday::ConnectionFailed, Parslet::ParseFailed
nil
end
def from_database