Correction des incohérences dans le référentiel lorsque SegmentNotFound était signalé dans AEM 6.x

Dernière mise à jour : 2023-11-16

Si vous rencontrez des incohérences dans le référentiel (référentiel) lorsque SegmentNotFound signalé, exécutez une vérification de cohérence sur le référentiel, recherchez la dernière bonne révision (état sain), puis revenez-y.

Description

Environnement

Adobe Experience Manager (AEM) 6.x

Problème/Symptômes

Les exceptions pour SegmentNotFound sont observées dans les journaux.

Exemple :

  1. *ERROR* [ FelixStartLevel] org.apache.sling.event [ org.apache.sling.event.impl.jobs.queues.QueueManager(1431)] La méthode activate a généré une exception (org.apache.jackrabbit.oak.plugins.segment.SegmentNotFoundException : Segment da5bcb95-d00a-4c04-a9d9-0f10f2b14e5e introuvable)

  2. **ERROR* [ pool-6-thread-3] org.apache.sling.commons.scheduler.impl.QuartzScheduler Exception lors de l’exécution de la tâche de org.apache.jackrabbit.oak.plugins.index.AsyncIndexUpdate@1dc173f9 : segment e669f30b-e886-4b7a-b161-56432601ec6b introuvable

    org.apache.jackrabbit.oak.plugins.segment.SegmentNotFoundException : segment e669f30b-e886-4b7a-b161-56432601ec6b introuvable*

Résolution

Exécutez une vérification de cohérence sur le référentiel, recherchez la dernière bonne révision (état sain) et revenez-y.

Procédez de la façon suivante :

  1. Téléchargez une version de oak-run correspondant à votre version oak principale depuis https://mvnrepository.com/artifact/org.apache.jackrabbit/oak-run.

  2. Pour rétablir le dernier bon état d’un magasin de segments corrompu, accédez au répertoire de travail de CQ (celui contenant le dossier crx-quickstart) et sauvegardez tous les fichiers dans ./crx-quickstart/repository/segmentstore/.

  3. Effectuez la vérification de cohérence.

    java -Xmx6000m -jar oak-run-*.jar check --bin=-1 /path/to/crx-quickstart/repository/segmentstore

    Cette option effectue une recherche vers l’arrière par rapport aux révisions jusqu’à ce qu’elle en trouve une cohérente :

    Recherchez un message comme celui-ci :

    [ main] INFO o.a.j.o.p.s.f.t.ConsistencyChecker - Trouvé la dernière bonne révision afdb922d-ba53-4a1b-aa1b-1cb044b535cf:234880

  4. Rétablissez le référentiel à cette révision en modifiant ./crx-quickstart/repository/segmentstore/journal.log et supprimer toutes les lignes après la ligne contenant la dernière bonne révision.

  5. Tout supprimer ./crx-quickstart/repository/segmentstore/*.bak .

  6. Exécutez le nettoyage des points de contrôle pour supprimer les points de contrôle orphelins :

    java -Xmx6000m -jar oak-run-*.jar checkpoints /path/to/crx-quickstart/repository/segmentstore rm-unreferenced

  7. Enfin, compactez le référentiel :

    java -Xmx6000m -jar oak-run-*.jar compact /path/to/crx-quickstart/repository/segmentstore/

Cause
En raison de problèmes plus anciens dans Oak ou de certaines incohérences dans le référentiel, un segment peut être manquant et le référentiel peut être incohérent.

Sur cette page