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

L'optimisation de l'index lucene peut échouer si usage et volumétrie conséquents

XMLWordImprimable

    • Icon: Bug Bug
    • Résolution: Ne sera pas résolu
    • Icon: Mineur Mineur
    • Aucune
    • 6.02.15, 6.03.05, 6.04.03
    • Aucune
    • Aucune

      A la fin de chaque indexation, on appelle une méthode "optimisation" qui lance la commande forceMerge(1). Cette méthode semble comporter des risques et peut entraîner une corruption de l'index par exemple.

      Une solution serait de sortir cette action du job d'indexation, pour qu'elle ne soit effectuée que la nuit par exemple, que s'il y en a besoin (voir méthode IndexWriter.maybeMerge), et en s'assurant qu'aucun accès en lecture n'est fait en parallèle sur l'index.

      Exemple d'exception obtenue sur une volumétrie et une fréquentation forte sur le site, après exécution de l'indexation complète :

      2015-10-01 15:24:41.846 [Indexer.java:310] [ERROR] Exception lors de l'optimisation de l'index
      java.io.FileNotFoundException: _n.fdt
      	at org.apache.lucene.store.FSDirectory.fileLength(FSDirectory.java:284) ~[lucene-core-3.6.2.jar:3.6.2 1423725 - rmuir - 2012-12-18 19:45:40]
      	at org.apache.lucene.index.SegmentInfo.sizeInBytes(SegmentInfo.java:303) ~[lucene-core-3.6.2.jar:3.6.2 1423725 - rmuir - 2012-12-18 19:45:40]
      	at org.apache.lucene.index.TieredMergePolicy.size(TieredMergePolicy.java:635) ~[lucene-core-3.6.2.jar:3.6.2 1423725 - rmuir - 2012-12-18 19:45:40]
      	at org.apache.lucene.index.TieredMergePolicy.useCompoundFile(TieredMergePolicy.java:613) ~[lucene-core-3.6.2.jar:3.6.2 1423725 - rmuir - 2012-12-18 19:45:40]
      	at org.apache.lucene.index.DocumentsWriter.flush(DocumentsWriter.java:593) ~[lucene-core-3.6.2.jar:3.6.2 1423725 - rmuir - 2012-12-18 19:45:40]
      	at org.apache.lucene.index.IndexWriter.doFlush(IndexWriter.java:3587) ~[lucene-core-3.6.2.jar:3.6.2 1423725 - rmuir - 2012-12-18 19:45:40]
      	at org.apache.lucene.index.IndexWriter.flush(IndexWriter.java:3552) ~[lucene-core-3.6.2.jar:3.6.2 1423725 - rmuir - 2012-12-18 19:45:40]
      	at org.apache.lucene.index.IndexWriter.forceMerge(IndexWriter.java:2516) ~[lucene-core-3.6.2.jar:3.6.2 1423725 - rmuir - 2012-12-18 19:45:40]
      	at org.apache.lucene.index.IndexWriter.forceMerge(IndexWriter.java:2492) ~[lucene-core-3.6.2.jar:3.6.2 1423725 - rmuir - 2012-12-18 19:45:40]
      	at com.jsbsoft.jtf.textsearch.Indexer.optimisation(Indexer.java:307) ~[core-6.02.08.jar:na]
      	at com.jsbsoft.jtf.textsearch.IndexerJob.run(IndexerJob.java:133) [core-6.02.08.jar:na]
      	at com.jsbsoft.jtf.textsearch.IndexerJob.perform(IndexerJob.java:157) [core-6.02.08.jar:na]
      	at com.kportal.scheduling.spring.quartz.LogReportJob.execute(LogReportJob.java:58) [core-6.02.08.jar:na]
      	at org.quartz.core.JobRunShell.run(JobRunShell.java:213) [quartz-2.1.7.jar:na]
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_80]
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_80]
      	at java.lang.Thread.run(Thread.java:745) [na:1.7.0_80]

            olivier.camon Olivier CAMON [X] (Inactif)
            alice.ark Alice ARK [X] (Inactif)
            Votes:
            1 Voter pour ce ticket
            Gérer les observateurs:
            4 Démarre l'observation de ce ticket

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