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
master
Jeong Arm 5 years ago committed by Eugen Rochko
parent 5034418e2c
commit 00d7bdcc2a
  1. 10
      app/services/account_search_service.rb
  2. 11
      app/services/tag_search_service.rb

@ -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

@ -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

Loading…
Cancel
Save