2012-02-01 18 views
5

Nuestros índices de solr se actualizan de acuerdo con un cronograma, y ​​arbitrariamente según sea necesario mediante una importación completa de DataImportHandler. Hemos tenido varias ocasiones en las que la importación falla por varias razones.Solr: ¿cómo puedo recibir notificaciones de importaciones fallidas desde mi DataImportHandler?

¿Cómo puedo recibir una notificación (preferiblemente correo electrónico) de que se ha producido un error al realizar una importación con un DataImportHandler?

Respuesta

1

Después de intentar utilizar un EventListener con cierto éxito revisamos nuestras opciones y finalmente decidimos por un enfoque menos-que-a prueba de tontos.

En lugar de extender Solr, estamos utilizando nuestra infraestructura de supervisión existente (principalmente con Nagios) para sondear el estado de dataimporthandler. Se ejecuta cada minuto y nos alerta a través de nuestros canales normales si detecta una importación fallida. Esto es bueno, pero aún no detecta si los trabajos no se ejecutan en absoluto, y se ha perdido algunos casos de esquina más.

En general, esto funciona bastante bien por ahora. Utiliza nuestra infraestructura existente y mantiene nuestros esfuerzos alrededor de Solr limitados a su funcionalidad principal. Definitivamente voy a volver a visitar esto cuando finalmente hagamos la actualización a Solr 4.0.

7

No hay una solución de configuración fácil. Pero existe una alternativa que puede tener que hacer poco trabajo.

Puede registrar EventListener con DIH en data-config para escuchar los eventos EventListener.

Consulte Wiki

<dataConfig> 
    <document onImportStart ="com.foo.StartEventListener" onImportEnd="com.foo.EndEventListener"> 
    .... 
    </document> 
</dataConfig> 

Su EventListener le da acceso a Context objetos, que proporciona acceso a la mayoría de DataImportHandler Objetos & Estadísticas de Eventos.

Por ejemplo, onImportEnd caso de que su com.foo.EndEventListener podría usar Context mango objeto de conseguir Staistics tales # of DocsSkipped, # of DocsFailed ... Context es un objeto valioso que expone gran cantidad de elementos internos DIH. Depende de su oyente de eventos hacer lo que tiene que hacer con esta información.

Tal vez una advertencia, la notificación de DIH es sobre todo después del hecho, no se le notificarán los sucesos como sucede, debe esperar a que el proceso de importación se complete para que DIH notifique a su oyente o puede haber un solución alternativa

Cuestiones relacionadas