2012-08-17 23 views
5

El código está trabajando muy bien con los trabajos retrasados ​​y su cola de la toma en la tabla delayed_jobs y los trabajadores se les procesamiento, pero todavía estamos recibiendo una excepción en la destrucción de objetosDelta Indexación - Retraso Jobs no está trabajando

aquí es la huella

vendor/bundle/ruby/1.9.1/gems/riddle-1.5.1/lib/riddle/client.rb:639:in `recv' 
vendor/bundle/ruby/1.9.1/gems/riddle-1.5.1/lib/riddle/client.rb:639:in `block in request' 
vendor/bundle/ruby/1.9.1/gems/riddle-1.5.1/lib/riddle/client.rb:538:in `connect' 
vendor/bundle/ruby/1.9.1/gems/riddle-1.5.1/lib/riddle/client.rb:623:in `request' 
vendor/bundle/ruby/1.9.1/gems/riddle-1.5.1/lib/riddle/client.rb:226:in `run' 
vendor/bundle/ruby/1.9.1/gems/riddle-1.5.1/lib/riddle/client.rb:338:in `query' 
vendor/bundle/ruby/1.9.1/gems/thinking-sphinx-2.0.10/lib/thinking_sphinx/search.rb:414:in `block (2 levels) in populate' 
vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.3/lib/active_support/notifications.rb:123:in `block in instrument' 
vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.3/lib/active_support/notifications/instrumenter.rb:20:in `instrument' 
vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.3/lib/active_support/notifications.rb:123:in `instrument' 
vendor/bundle/ruby/1.9.1/gems/thinking-sphinx-2.0.10/lib/thinking_sphinx/search.rb:518:in `log' 
vendor/bundle/ruby/1.9.1/gems/thinking-sphinx-2.0.10/lib/thinking_sphinx/search.rb:527:in `log' 
vendor/bundle/ruby/1.9.1/gems/thinking-sphinx-2.0.10/lib/thinking_sphinx/search.rb:413:in `block in populate' 
vendor/bundle/ruby/1.9.1/gems/thinking-sphinx-2.0.10/lib/thinking_sphinx/search.rb:568:in `call' 
vendor/bundle/ruby/1.9.1/gems/thinking-sphinx-2.0.10/lib/thinking_sphinx/search.rb:568:in `retry_on_stale_index' 
vendor/bundle/ruby/1.9.1/gems/thinking-sphinx-2.0.10/lib/thinking_sphinx/search.rb:411:in `populate' 
vendor/bundle/ruby/1.9.1/gems/thinking-sphinx-2.0.10/lib/thinking_sphinx/search.rb:176:in `method_missing' 
vendor/bundle/ruby/1.9.1/gems/thinking-sphinx-2.0.10/lib/thinking_sphinx/search_methods.rb:395:in `search_for_id' 
vendor/bundle/ruby/1.9.1/gems/thinking-sphinx-2.0.10/lib/thinking_sphinx/active_record.rb:268:in `delete_in_index' 
vendor/bundle/ruby/1.9.1/gems/thinking-sphinx-2.0.10/lib/thinking_sphinx/active_record.rb:348:in `block in toggle_deleted' 
vendor/bundle/ruby/1.9.1/gems/thinking-sphinx-2.0.10/lib/thinking_sphinx/active_record.rb:34 
. 
. 
. 
app/controllers/received_messages_controller.rb:142:in `destroy' 

La pregunta cuando se ha agregado el delta de trabajo diferido, ¿por qué está tratando de acceder a la esfinge de pensar directamente?

Aquí es la definición de índice de bloque

define_index do 
    if Rails.env.production? 
     set_property :delta => FlyingSphinx::DelayedDelta 
    else 
     set_property :delta => true 
    end 

    indexes message.subject 

    has user_id, read, created_at 

    where "users_user_messages.is_active = 'Y'" 

    end 

Respuesta

2

lo que está sucediendo aquí es que el pensamiento Sphinx está comprobando si el objeto existe en la Esfinge antes de marcar como eliminado - y la única manera de hacerlo es buscar lo . Sin embargo, hay un cierto manejo de errores en Thinking Sphinx, que debería captar (e ignorar) los errores de Sphinx, por lo que no estoy seguro de por qué estás viendo excepciones.

¿Puede compartir la descripción del error que aparece antes del seguimiento de la pila?

Además, esto no está relacionado con el trabajo retrasado.

Cuestiones relacionadas