Problema de Hibernate Search en Amazon

Versiones tecnológicas :

Hibernate 3.6.5 
Hibernate Search 3.4.0
Lucene (lucene-core - *. Jar) 3.1.0
Primavera 3.1.0.M2

Configuración de hibernación (búsqueda) :

<prop key="hibernate.search.default.indexBase">/some/dir</prop>
<prop key="hibernate.search.default.directory_provider">org.hibernate.search.store.FSDirectoryProvider</prop>
<prop key="hibernate.search.default.locking_strategy">native</prop>
<prop key="hibernate.search.default.exclusive_index_use">false</prop>

El problema :
nuestra aplicación se implementa en Amazon (nube de AWS), pero también hemos enfrentado este problema en nuestros clústeres locales:

El diseño de la aplicación es tal que hay una Threadque se genera dentro de la aplicación principal (Web) de donde necesitamos actualizar un Indexado entidad . Básicamente es como un hilo de monitor de estado que lee un archivo .status y actualiza la base de datos cada 30 segundos más o menos. Esto sigue ocurriendo durante aproximadamente 10 minutos a 1/2 hora en promedio. El problema que vemos es que: cada pocos días necesitamos regenerar los índices porque Hibernate Search deja de devolver cualquier cosa para la entidad en cuestión (la que se discutió anteriormente).

Revisé algunos foros y parece que se sugiere que solo un hilo debería actualizar los índices de Lucene. Pero también se da que la escritura de índice es segura para subprocesos. Entonces, incluso si varios hilos están escribiendo en el mismo índice, todavía espero que no cause el problema (que no se devuelva nada en la búsqueda). Es decir, puedo obtener el estado obsoleto de la entidad en cuestión, pero aún así, algo debería ser devuelto.

Estamos utilizando la implementación predeterminada de IndexReader / Writer de Hibernate Search.

Cualquier ayuda sería muy apreciada. Gracias.

Respuesta 1

Aquí hay algunos pensamientos.

Revisé algunos foros y parece que se sugiere que solo un hilo debería actualizar los índices de Lucene.

Eso no es generalmente cierto. Lucene e Hibernate Search permiten múltiples escritores de índices, PERO el acceso al índice debe estar sincronizado correctamente, lo que sucede a través de org.apache.lucene.store.LockFactory de Lucene . La fábrica de cerraduras es configurable y está utilizando la nativa a través de la propiedad * hibernate.search.default.locking_strategy *. El problema podría ser que esta estrategia está basada en archivos. No sé mucho sobre el funcionamiento interno del sistema de archivos distribuido de Amazon, pero me imagino que los bloqueos de archivos simplemente no funcionan en este caso. Es posible que deba implementar una estrategia de bloqueo personalizada.

Pero también se da que la escritura de índice es segura para subprocesos. Entonces, incluso si varios hilos están escribiendo en el mismo índice, todavía espero que no deba causar el problema

Correcto, siempre que el bloqueo funcione.

Una alternativa es trabajar sin bloqueos (estableciendo * hibernate.search.default.locking_strategy * en none ) siempre que pueda garantizar que solo su hilo de actualización escriba alguna vez en el índice. ¿Tiene aparte el hilo de actualización indexación automática habilitada? Si es así, intente desactivarlo (permitido, su caso de uso lo permite).

Respuesta: 2

Tengo una entidad llamada Transacción y su tabla relacionada en la base de datos es TAB_TRANSACTIONS. Todo el sistema funciona bastante bien; ahora ha surgido un nuevo requisito en el que el cliente ha exigido ...

Tengo un montón de activos públicos que me gustaría comprimir y proporcionar para descargar. ¿Hay una manera fácil en Play! crear un zip para una lista de archivos / carpetas?

Tengo un gran problema al intentar solucionar este código, sigo recibiendo un error masivo: Excepción en el hilo "AWT-EventQueue-1" java.lang.NullPointerException en com.allcare.arfile.CloudStoreInfo ...

¿Los métodos "públicos" o "protegidos" no hacen ninguna diferencia para una clase privada anidada que no implementa ninguna interfaz ...? Si una clase privada anidada no implementa ninguna interfaz o ...