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
This commit is contained in:
		
							parent
							
								
									5034418e2c
								
							
						
					
					
						commit
						00d7bdcc2a
					
				@ -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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user