diff options
author | Jeong Arm <kjwonmail@gmail.com> | 2019-09-27 01:06:08 +0900 |
---|---|---|
committer | Eugen Rochko <eugen@zeonfederated.com> | 2019-09-26 18:06:08 +0200 |
commit | 00d7bdcc2adcc15fe1a95862478cb9b43065a4b0 (patch) | |
tree | 24c151f72d48859fa51f31cebd450175b64ce248 | |
parent | 5034418e2c41fbd51fc85458dd3fdba72a672625 (diff) |
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
-rw-r--r-- | app/services/account_search_service.rb | 10 | ||||
-rw-r--r-- | app/services/tag_search_service.rb | 11 |
2 files changed, 11 insertions, 10 deletions
diff --git a/app/services/account_search_service.rb b/app/services/account_search_service.rb index 01caaefa9..40c5f8590 100644 --- a/app/services/account_search_service.rb +++ b/app/services/account_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 diff --git a/app/services/tag_search_service.rb b/app/services/tag_search_service.rb index 64dd76bb7..5cb0eea7a 100644 --- a/app/services/tag_search_service.rb +++ b/app/services/tag_search_service.rb @@ -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 |