From dc8556ee07dc98532c355ceab345c97f98f2511b Mon Sep 17 00:00:00 2001 From: kjwon15 Date: Thu, 26 Sep 2019 01:23:49 +0900 Subject: [PATCH 1/3] Fallback to Database search when ES not available --- app/services/account_search_service.rb | 10 +++++----- 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 01caaefa94fe2..dabe312dd06f5 100644 --- a/app/services/account_search_service.rb +++ b/app/services/account_search_service.rb @@ -42,11 +42,9 @@ def search_results 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 if results.blank? + results end end @@ -92,6 +90,8 @@ def from_elasticsearch ActiveRecord::Associations::Preloader.new.preload(records, :account_stat) records + rescue Faraday::ConnectionFailed, Parslet::ParseFailed + [] end def reputation_score_function diff --git a/app/services/tag_search_service.rb b/app/services/tag_search_service.rb index 64dd76bb778d7..018cd8de820be 100644 --- a/app/services/tag_search_service.rb +++ b/app/services/tag_search_service.rb @@ -6,11 +6,10 @@ def call(query, options = {}) @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 if results.blank? + + results end private @@ -74,6 +73,8 @@ def from_elasticsearch } TagsIndex.query(query).filter(filter).limit(@limit).offset(@offset).objects.compact + rescue Faraday::ConnectionFailed, Parslet::ParseFailed + [] end def from_database From fc59aabe67c9e9af40d614fb220dcca55e3ca58e Mon Sep 17 00:00:00 2001 From: Kjwon15 Date: Thu, 26 Sep 2019 08:52:27 +0900 Subject: [PATCH 2/3] Prevent double work if ES gives 0 result --- app/services/account_search_service.rb | 4 ++-- app/services/tag_search_service.rb | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/services/account_search_service.rb b/app/services/account_search_service.rb index dabe312dd06f5..ffea426995ab7 100644 --- a/app/services/account_search_service.rb +++ b/app/services/account_search_service.rb @@ -43,7 +43,7 @@ def search_results @search_results ||= begin results = from_elasticsearch if Chewy.enabled? - results = from_database if results.blank? + results = from_database if results.nil? results end end @@ -91,7 +91,7 @@ def from_elasticsearch 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 018cd8de820be..9b52950aed00a 100644 --- a/app/services/tag_search_service.rb +++ b/app/services/tag_search_service.rb @@ -7,7 +7,7 @@ def call(query, options = {}) @limit = options[:limit].to_i results = from_elasticsearch if Chewy.enabled? - results = from_database if results.blank? + results = from_database if results.nil? results end @@ -74,7 +74,7 @@ def from_elasticsearch TagsIndex.query(query).filter(filter).limit(@limit).offset(@offset).objects.compact rescue Faraday::ConnectionFailed, Parslet::ParseFailed - [] + nil end def from_database From 969596fb779422798c99f03704745b6822446134 Mon Sep 17 00:00:00 2001 From: kjwon15 Date: Fri, 27 Sep 2019 00:23:24 +0900 Subject: [PATCH 3/3] Apply suggestion from code review --- app/services/account_search_service.rb | 2 +- app/services/tag_search_service.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/services/account_search_service.rb b/app/services/account_search_service.rb index ffea426995ab7..40c5f8590c988 100644 --- a/app/services/account_search_service.rb +++ b/app/services/account_search_service.rb @@ -43,7 +43,7 @@ def search_results @search_results ||= begin results = from_elasticsearch if Chewy.enabled? - results = from_database if results.nil? + results ||= from_database results end end diff --git a/app/services/tag_search_service.rb b/app/services/tag_search_service.rb index 9b52950aed00a..5cb0eea7a2f46 100644 --- a/app/services/tag_search_service.rb +++ b/app/services/tag_search_service.rb @@ -7,7 +7,7 @@ def call(query, options = {}) @limit = options[:limit].to_i results = from_elasticsearch if Chewy.enabled? - results = from_database if results.nil? + results ||= from_database results end