Es wurden Inkonsistenzen im Repository behoben, wenn SegmentNotFound in AEM 6.x gemeldet wurde.

Beschreibung

Umgebung
Adobe Experience Manager 6.x

Problem/Symptome
Beobachtet SegmentNotFound Ausnahmen in den Protokollen. Beispiel:

  1. *ERROR* FelixStartLevel org.apache.sling.event org.apache.sling.event.impl.jobs.queues.QueueManager(1431) Die Methode activate hat eine Ausnahme ausgelöst (org.apache.jackrabbit.oak.plugins.segment.SegmentNotFoundException: Segment da5bcb95-d00a-4c04-a9d9-0f10f2b14e5e nicht gefunden)

  2. **ERROR* pool-6-thread-3 org.apache.sling.commons.scheduler.impl.QuartzScheduler Ausnahme während der Auftragsausführung von org.apache.jackrabbit.oak.plugins.index.AsyncIndexUpdate@1dc173f9 : Segment e669f30b-e886-4b7a-b161-56432601ec6b wurde nicht gefunden

    org.apache.jackrabbit.oak.plugins.segment.SegmentNotFoundException: Segment e669f30b-e886-4b7a-b161-56432601ec6b wurde nicht gefunden*

Lösung

Führen Sie eine Konsistenzprüfung für das Repository durch, suchen Sie den letzten guten Zustand der Revision und kehren Sie zurück. Führen Sie folgende Schritte aus:

  1. Laden Sie von https://mvnrepository.com/artifact/org.apache.jackrabbit/oak-run eine Version von oak-run herunter, die Ihrer Oak-Core-Version entspricht.

  2. Um einen beschädigten Segmentspeicher wieder auf den neuesten guten Zustand zu bringen, wechseln Sie in das Arbeitsverzeichnis von CQ (das Verzeichnis, das den Ordner crx-quickstart enthält) und sichern Sie alle Dateien in ./crx-quickstart/repository/segmentstore/.

  3. Führen Sie die Konsistenzprüfung durch.

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

    Dadurch werden die Revisionen rückwärts durchsucht, bis eine konsistente gefunden wird:

    Suchen Sie nach einer Nachricht wie der folgenden:

    INFO o.a.j.o.p.s.f.t.ConsistencyChecker - Die neueste gute Revision afdb922d-ba53-4a1b-aa1b-1cb044b535cf:234880 gefunden

  4. Stellen Sie das Repository auf diese Revision zurück, indem Sie es bearbeiten ./crx-quickstart/repository/segmentstore/journal.log und Löschen aller Zeilen nach der Zeile, die die neueste gute Revision enthält.

  5. Entfernen Sie alle ./crx-quickstart/repository/segmentstore/*.bak-Dateien.

  6. Führen Sie eine Checkpoint-Bereinigung aus, um verwaiste Checkpoints zu entfernen:

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

  7. Komprimieren Sie abschließend das Repository:

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

Ursache
Aufgrund einiger älterer Probleme in Oak oder einiger Inkonsistenzen im Repository kann ein Segment fehlen und das Repository könnte inkonsistent sein.

Auf dieser Seite