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

    Informations

    • Type: Bug
    • Etat: Fermé
    • Priorité: Majeur
    • Résolution: Ne sera pas résolu
    • Affecte la/les version(s): 6.02.22, 6.04.14
    • Version(s) corrigée(s): 6.02.24
    • Composants: Aucune
    • Etiquettes:
      Aucune

      Description

      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

        Pièces jointes

          Liens des demandes

            Activité

              Personnes

              • Responsable:
                camille.lebugle Camille LEBUGLE
                Rapporteur:
                alice.ark Alice ARK [X] (Inactif)
              • Votes:
                0 Voter pour cette demande
                Gérer les observateurs:
                4 Commencer l'observation de cette demande

                Dates

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