Image du projet 'Socle K-Sup' téléversée
  1. Socle K-Sup
  2. CORE-1730

Erreur lors d'une recherche lucene dans certains cas

XMLWordImprimable

    • Icon: Bug Bug
    • Résolution: Ne sera pas résolu
    • Icon: Majeur Majeur
    • 6.02.24
    • 6.02.22, 6.04.14
    • Aucune
    • Aucune

      Pour corriger le CORE-1599, on a intégré des fermetures d'index sur lucene. Sauf que dans certains cas, si deux threads interviennent en même temps sur une recherche, l'un des deux peut se retrouver avec un IndexReader fermé par l'autre thread.

      En front-office :

      org.apache.lucene.store.AlreadyClosedException: this IndexReader is closed
              at org.apache.lucene.index.IndexReader.ensureOpen(IndexReader.java:245) ~[lucene-core-3.6.2.jar:3.6.2 1423725 - rmuir - 2012-12-18 19:45:40]
              at org.apache.lucene.index.SegmentReader.norms(SegmentReader.java:569) ~[lucene-core-3.6.2.jar:3.6.2 1423725 - rmuir - 2012-12-18 19:45:40]
              at org.apache.lucene.search.TermQuery$TermWeight.scorer(TermQuery.java:107) ~[lucene-core-3.6.2.jar:3.6.2 1423725 - rmuir - 2012-12-18 19:45:40]
              at org.apache.lucene.search.BooleanQuery$BooleanWeight.scorer(BooleanQuery.java:305) ~[lucene-core-3.6.2.jar:3.6.2 1423725 - rmuir - 2012-12-18 19:45:40]
              at org.apache.lucene.search.BooleanQuery$BooleanWeight.scorer(BooleanQuery.java:305) ~[lucene-core-3.6.2.jar:3.6.2 1423725 - rmuir - 2012-12-18 19:45:40]
              at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:577) ~[lucene-core-3.6.2.jar:3.6.2 1423725 - rmuir - 2012-12-18 19:45:40]
              at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:383) ~[lucene-core-3.6.2.jar:3.6.2 1423725 - rmuir - 2012-12-18 19:45:40]
              at com.univ.utils.RechercheUtil.search(RechercheUtil.java:184) ~[RechercheUtil.class:na]

      En back-office :

      2016-03-09 09:05:00.181 [MultiFicheAutoCompletion.java:55] [ERROR] Impossible d'executer la recherche
      org.apache.lucene.store.AlreadyClosedException: this IndexReader is closed
              at org.apache.lucene.index.IndexReader.ensureOpen(IndexReader.java:245) ~[lucene-core-3.6.2.jar:3.6.2 1423725 - rmuir - 2012-12-18 19:45:40]
              at org.apache.lucene.index.IndexReader.document(IndexReader.java:1134) ~[lucene-core-3.6.2.jar:3.6.2 1423725 - rmuir - 2012-12-18 19:45:40]
              at org.apache.lucene.search.IndexSearcher.doc(IndexSearcher.java:258) ~[lucene-core-3.6.2.jar:3.6.2 1423725 - rmuir - 2012-12-18 19:45:40]
              at com.jsbsoft.jtf.textsearch.util.RechercheUtilBO.searchAll(RechercheUtilBO.java:108) ~[RechercheUtilBO.class:na]

      A priori, je dirai que cela provient de la méthode forceInit() de Searcher qui n'est pas synchronisée. Elle est appelée dans testReader() (qui vérifie que l'index est bien ouvert avant de lancer une recherche), mais si les deux threads y rentrent ensemble, l'un peut fermer le reader juste après qu'il ait été ouvert par le premier.

      A voir si ce n'est pas testReader() qui doit être passée en synchronized

            camille.lebugle Camille LEBUGLE
            alice.ark Alice ARK [X] (Inactif)
            Votes:
            0 Voter pour ce ticket
            Gérer les observateurs:
            4 Démarre l'observation de ce ticket

              Création:
              Mise à jour:
              Résolue: