Question / Problème

Il peut arriver que l’index Lucene d’un référentiel devienne incohérent, en particulier si le référentiel est arrêté ou si le processus Java correspondant est annulé de manière inattendue. Dépendant de la gravité d'une incohérence d'index, le référentiel peut ne plus fonctionner correctement au démarrage.

Réponse / Résolution

La classe LuceneHandler du CRX étend la classe Suchindex [1] Jackrabbit, qui fournit les paramètres de configuration suivantes pour vérifier et corriger les incohérences d'index :

Parameter Default Value Description
enableConsistencyCheck false Si réglé sur true, une vérification de cohérence est exécutée selon le paramètre forceConsistencyCheck. Si la valeur est « false », aucune vérification de cohérence n’est effectuée au démarrage.
forceConsistencyCheck false Exécute une vérification de cohérence sur chaque démarrage. Si la valeur est « false », une vérification de cohérence est effectuée uniquement lorsque l’index de recherche détecte une fermeture forcée antérieure.
autoRepair true Les erreurs détectées par la vérification de cohérence sont automatiquement réparées. Si la valeur est « false », les erreurs sont uniquement consignées dans le journal.

Afin de déclencher une vérification de cohérence d'index, modifiez simplement le fichier de configuration workspace.xml correspondant, par exemple : <crx_home>/crx-quickstart/repository/workspaces/crx.default/workspace.xml :

workspace.xml

<SearchIndex class="com.day.crx.query.lucene.LuceneHandler">
    ...
    <param name="enableConsistencyCheck" value="true" />
    <param name="forceConsistencyCheck" value="true" />
    <param name="autoRepair" value="true" />
</SearchIndex>

Lorsque cette configuration est en place, une erreur de vérification de cohérence de l’index est exécutée au démarrage, selon le volume du référentiel et la taille de l’index. Cela peut prendre un certain temps. Dans le error.log de CRX, la progression de la vérification peut être contrôlée :

*INFO * SearchIndex: Running consistency check...
*INFO * ConsistencyCheck: progress: 10%
*INFO * ConsistencyCheck: progress: 20%
...

Ne pas oublier de supprimer à nouveau la configuration ci-dessus, sinon le fichier de vérification de cohérence est déclenché à chaque redémarrage du référentiel, ce qui ralentit cette opération. La définition de la valeur enableConsistencyCheck sur « false » désactive également complètement la vérification.

Reconstituez complètement l’index

Pour recréer complètement l’index, arrêtez le référentiel, supprimez les répertoires d’index et relancez le référentiel. La régénération de l’index peut prendre quelques heures. Les répertoires d'index sont stockés séparément pour chaque noeud de la grappe, dans les répertoires suivants :

  • crx-quickstart/repository/repository/index
  • crx-quickstart/repository/workspaces/crx.default/index
  • crx-quickstart/repository/workspaces/crx.system/index

Application

CRX >= 1.4.x

Ce produit est distribué sous licence Creative Commons Attribution - Pas d’utilisation commerciale - Partage à l’identique 3.0 non transposé  Les publications Twitter™ et Facebook ne sont pas couvertes par les dispositions Creative Commons.

Mentions légales   |   Politique de confidentialité en ligne