2009-08-05 5 views
0

Je reçois java.io.EOFException lors de la lecture d'un bloc binaire de l'index lucene. Je stocke l'objet java comme byte-array dans le champ d'index lucene et je le lis quand il y a un hit.Lucene Erreur lors de la lecture du bloc binaire: java.io.EOFException

Voici trace de pile:

Causée par: java.io.EOFException à java.io.ObjectInputStream $ PeekInputStream.readFully (ObjectInputStream.java:2281) à java.io.ObjectInputStream $ BlockDataInputStream.readShort (ObjectInputStream.java:2750) à java.io.ObjectInputStream.readStreamHeader (ObjectInputStream.java:780) à java.io.ObjectInputStream. (ObjectInputStream.java:280) à org.terracotta.modules.searchable.util. SerializationUtil $ OIS. (SerializationUtil.java:20)

J'ai de l'arrestation ound threads qui écrivent dans l'index. Mais je les tamponne et puis les écris immédiatement comme 1000. De temps en temps, j'émets aussi optimize() sur l'index. Quand j'écris, je réouvre IndexReader. Est-ce que cela se produit à cause de l'appel de réouverture d'IndexReader?

Merci.

Cordialement Tushar

+0

Veuillez fournir quelques détails d'arrière-plan. Lucene est prévu pour stocker des documents et les récupérer en fonction des requêtes de texte. Vous semblez faire quelque chose d'autre. En outre, vous utilisez la terre cuite - est-ce un indice distribué? Cela peut être très important. Pourriez-vous préciser comment vous avez construit l'index et à quoi ressemble la requête? –

Répondre

0

Cela ne ressemble pas à elle n'a rien à voir directement avec Lucene. Au contraire, l'exception se produit dans le module en terre cuite. Apparemment, alors qu'il est en train de sérialiser, probablement sérialiser vos fichiers Java. Je ne trouve pas les javadocs pour ce module de terre cuite, mais il me semble, d'après la trace de la pile, que la longueur du flux des flots est incorrectement spécifiée pour le sérialiseur. Comme Yuval F le souligne: lucene ne vise pas à gérer le contenu binaire. Ce n'est pas un mécanisme de stockage et ne devrait pas être utilisé en tant que tel. Vous ne pouvez pas compter sur l'obtention d'une version correctement sérialisée de votre bytecode de lucene.