Sha256: 4a2367594956f27c96eb3311d53a5523aa96d3b27dcc2bc63a19df48fbbb3c6a

Contents?: true

Size: 958 Bytes

Versions: 10

Compression:

Stored size: 958 Bytes

Contents

class ThinkingSphinx::Middlewares::StaleIdFilter <
  ThinkingSphinx::Middlewares::Middleware

  def call(contexts)
    @context   = contexts.first
    @stale_ids = []
    @retries   = stale_retries

    begin
      app.call contexts
    rescue ThinkingSphinx::Search::StaleIdsException => error
      raise error if @retries <= 0

      append_stale_ids error.ids
      @context.log :message, log_message

      @retries -= 1 and retry
    end
  end

  private

  def append_stale_ids(ids)
    @stale_ids |= ids

    context.search.options[:without_ids] ||= []
    context.search.options[:without_ids] |= ids
  end

  def log_message
    'Stale Ids (%s %s left): %s' % [
      @retries, (@retries == 1 ? 'try' : 'tries'), @stale_ids.join(', ')
    ]
  end

  def stale_retries
    case context.search.options[:retry_stale]
    when nil, TrueClass
      2
    when FalseClass
      0
    else
      context.search.options[:retry_stale].to_i
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
thinking-sphinx-3.1.0 lib/thinking_sphinx/middlewares/stale_id_filter.rb
thinking-sphinx-3.0.6 lib/thinking_sphinx/middlewares/stale_id_filter.rb
thinking-sphinx-3.0.5 lib/thinking_sphinx/middlewares/stale_id_filter.rb
thinking-sphinx-3.0.4 lib/thinking_sphinx/middlewares/stale_id_filter.rb
thinking-sphinx-3.0.3 lib/thinking_sphinx/middlewares/stale_id_filter.rb
thinking-sphinx-3.0.2 lib/thinking_sphinx/middlewares/stale_id_filter.rb
thinking-sphinx-3.0.1 lib/thinking_sphinx/middlewares/stale_id_filter.rb
thinking-sphinx-3.0.0 lib/thinking_sphinx/middlewares/stale_id_filter.rb
thinking-sphinx-3.0.0.rc lib/thinking_sphinx/middlewares/stale_id_filter.rb
thinking-sphinx-3.0.0.pre lib/thinking_sphinx/middlewares/stale_id_filter.rb