In den Protokollen werden SegmentNotFound-Ausnahmen (Ausnahmen zu nicht gefundenem Segment) beobachtet.

Problem

In den Protokollen werden SegmentNotFound-Ausnahmen (Ausnahmen zu nicht gefundenem Segment) beobachtet. Beispiel:

[1]
*ERROR* [FelixStartLevel] org.apache.sling.event [org.apache.sling.event.impl.jobs.queues.QueueManager(1431)] The activate method has thrown an exception (org.apache.jackrabbit.oak.plugins.segment.SegmentNotFoundException: Segment da5bcb95-d00a-4c04-a9d9-0f10f2b14e5e not found)

[2] 
*ERROR* [pool-6-thread-3] org.apache.sling.commons.scheduler.impl.QuartzScheduler Exception during job execution of org.apache.jackrabbit.oak.plugins.index.AsyncIndexUpdate@1dc173f9 : Segment e669f30b-e886-4b7a-b161-56432601ec6b not found
org.apache.jackrabbit.oak.plugins.segment.SegmentNotFoundException: Segment e669f30b-e886-4b7a-b161-56432601ec6b not found

Umgebung

AEM 6.0, AEM 6.1, AEM 6.2

Ursache

Aufgrund älterer Probleme in Oak oder aufgrund von Inkonsistenzen im Repository kann ein Segment verloren gehen und ein Repository inkonsistent sein.

Lösung

Führen Sie eine Konsistenzprüfung auf dem Repository aus, machen Sie die letzte fehlerfreie Revision [fehlerfreier Status] ausfindig und kehren Sie dorthin zurück. Führen Sie die folgenden Schritte aus:

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

    Hinweis:

    Verwenden Sie für Instanzen von AEM 6.0 eine Version von oak-run (oak-run-1.1.7.jar oder höher), die über den neuen Ausführungsmodus zum Überprüfen verfügt. https://github.com/apache/jackrabbit-oak/blob/trunk/oak-run/README.md#check
    Dies hilft beim Überprüfen der Segmentknoten-Speicherinkonsistenzen.

  2. Um eine beschädigte Segmentspeicherung zum letzten fehlerfreien Status zurückzusetzen, wechseln Sie ins Arbeitsverzeichnis von CQ (Verzeichnis mit Ordner crx-quickstart) und erstellen Sie ein Backup von allen Dateien unter /crx-quickstart/repository/segmentstore/.

  3. Führen Sie die Konsistenzprüfung aus:
    java -Xmx6000m -jar oak-run-*.jar check -d1 -p /path/to/crx-quickstart/repository/segmentstore

    . Bei der Prüfung werden ältere Revisionen durchsucht, bis eine konsistente Revision gefunden wird:
    Halten Sie nach Nachrichten wie der folgenden Ausschau:
    [main] INFO o.a.j.o.p.s.f.t.ConsistencyChecker - Found latest good revision afdb922d-ba53-4a1b-aa1b-1cb044b535cf:234880.

  4. Setzen Sie das Repository auf diese Revision zurück, indem Sie /crx-quickstart/repository/segmentstore/journal.log bearbeiten und alle Zeilen nach der Zeile löschen, die die letzte fehlerfreie Revision enthält.

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

  6. Führen Sie ein Clean-up für Checkpoints aus, um verwaiste Checkpoints zu entfernen:

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

  7. Komprimieren Sie zuletzt das Repository:

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

Dieses Werk unterliegt den Bedingungen der Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.  Twitter™- und Facebook-Beiträge fallen nicht unter die Bedingungen der Creative Commons-Lizenz.

Rechtliche Hinweise   |   Online-Datenschutzrichtlinie