about summary refs log tree commit diff
path: root/app/services/tag_search_service.rb
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 /app/services/tag_search_service.rb
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
Diffstat (limited to 'app/services/tag_search_service.rb')
-rw-r--r--app/services/tag_search_service.rb11
1 files changed, 6 insertions, 5 deletions
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