about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJeong Arm <kjwonmail@gmail.com>2019-09-27 01:06:08 +0900
committerEugen Rochko <eugen@zeonfederated.com>2019-09-26 18:06:08 +0200
commit00d7bdcc2adcc15fe1a95862478cb9b43065a4b0 (patch)
tree24c151f72d48859fa51f31cebd450175b64ce248
parent5034418e2c41fbd51fc85458dd3fdba72a672625 (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.rb10
-rw-r--r--app/services/tag_search_service.rb11
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