Solution et correction de la corruption de l’index avec AEM/AEM Forms

Si quelqu’un rencontre le problème de corruption d’index dans AEM/AEM forms, cet article vous aidera à résoudre le problème en indiquant comment supprimer les données d’index contenues dans le référentiel et réindexer l’index corrompu.

Description description

Environnement

Experience Manager Forms

Problème/Symptômes

Rencontrer une corruption d’index est un cas très inhabituel. Mais si cela se produit, des entrées de journal similaires à :
17.01.2019 17:55:47.374 *WARN* [ pool-118-thread-4] org.apache.jackrabbit.oak.plugins.index.AsyncIndexUpdate [ async] The index update failedorg.apache.jackrabbit.oak.api.CommitFailedException: OakMerge0001: OakMerge0001: Failed to merge changes to the underlying store (retries 5, 5169 ms)at org.apache.jackrabbit.oak.spi.state.AbstractNodeStoreBranch.merge0(AbstractNodeStoreBranch.java:345)at org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreBranch.merge(DocumentNodeStoreBranch.java:156)at org.apache.jackrabbit.oak.plugins.document.DocumentRootBuilder.merge(DocumentRootBuilder.java:160)at org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore.merge(DocumentNodeStore.java:1588)at org.apache.jackrabbit.oak.plugins.index.AsyncIndexUpdate.mergeWithConcurrencyCheck(AsyncIndexUpdate.java:581)at org.apache.jackrabbit.oak.plugins.index.AsyncIndexUpdate.updateIndex(AsyncIndexUpdate.java:525)at org.apache.jackrabbit.oak.plugins.index.AsyncIndexUpdate.runWhenPermitted(AsyncIndexUpdate.java:431)at org.apache.jackrabbit.oak.plugins.index.AsyncIndexUpdate.run(AsyncIndexUpdate.java:323)at org.apache.sling.commons.scheduler.impl.QuartzJobExecutor.execute(QuartzJobExecutor.java:115)at org.quartz.core.JobRunShell.run(JobRunShell.java:202)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1164)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:634)

Résolution resolution

Si quelqu’un est confronté à cette situation, la façon la plus rapide de résoudre ce problème est probablement de supprimer les données d’index contenues dans le référentiel et de réindexer l’index corrompu.

REMARQUE : la réindexation demande beaucoup de temps et de ressources. Pour ces exemples, nous utiliserons l’index "workflowDataLucene"

Supprimez les données d’index :

Les données d’index se trouvent dans le référentiel sous /oak:index/workflowDataLucene en tant que nœuds masqués. Par conséquent, pour supprimer l’index corrompu, vous devez :

  1. Copiez la définition d’index (uniquement) vers un nouvel emplacement.
  2. Supprimez l’ensemble de la structure du nœud /oak:index/workflowDataLucene.
  3. Recréez des /oak:index/workflowDataLucene et déclenchez la réindexation.

Solution de contournement :

Pour pallier ce problème, au lieu de supprimer l’index, vous pouvez le désactiver et créer un nouvel index avec la même définition :

  1. Créez un index avec la même définition d’index que celle corrompue.
  2. Déclencher la réindexation sur le nouvel index
  3. Désactivez l’index corrompu en modifiant la propriété de type sur « désactivé »

une fois ces modifications effectuées, chaque requête est envoyée au nouvel index

Supprimez les données de la base de données RDB :

En dernier recours, et si vous exécutez sur RDBmk, vous pouvez analyser pour supprimer les données d’index directement de la base de données avec comme requête semblable à :

DELETE FROM NODESWHERE
ID ='2:/oak:index/workflowDataLucene' ORIDLIKE '3:/oak:index/workflowDataLucene/%' ORIDLIKE '4:/oak:index/workflowDataLucene/%' ORIDLIKE '5:/oak:index/workflowDataLucene/%' ORIDLIKE '6:/oak:index/workflowDataLucene/%' ORIDLIKE '7:/oak:index/workflowDataLucene/%' ORIDLIKE '8:/oak:index/workflowDataLucene/%' ORIDLIKE '9:/oak:index/workflowDataLucene/%' ORIDLIKE '10:/oak:index/workflowDataLucene/%' OR 
IDLIKE '5:p/oak:index/workflowDataLucene/%' ORIDLIKE '6:p/oak:index/workflowDataLucene/%' ORIDLIKE '7:p/oak:index/workflowDataLucene/%' ORIDLIKE '8:p/oak:index/workflowDataLucene/%' ORIDLIKE '9:p/oak:index/workflowDataLucene/%' ORIDLIKE '10:p/oak:index/workflowDataLucene/%' ORIDLIKE '11:p/oak:index/workflowDataLucene/%' ORIDLIKE '12:p/oak:index/workflowDataLucene/%' OR


Si vous décidez d’utiliser ce chemin, veillez à vérifier la requête avant de l’exécuter, car elle peut nécessiter des modifications

REMARQUE : AEM doit être arrêté et les fichiers d’index et de cache persistants locaux (< crx-quickstart> /repository/cache et < crx-quickstart> /repository/index) supprimés avant de démarrer AEM après cette suppression.

recommendation-more-help
experience-cloud-kcs-help-kbarticles