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

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 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 resolution

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.

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f