Neuindizieren eines synchronen AEM Index | AEM, Oak

Beschreibung description

Umgebung
Adobe Experience Manager

Problem
Wie indiziere ich einen synchronen Oak-Index ordnungsgemäß neu, ohne Ausfallzeiten zu verursachen?

Auflösung resolution

Lösung
Neuindizieren eines synchronen Index durch einfaches Festlegen der reindex-Eigenschaft auf true  führt zu einem synchronen Vorgang, der dazu führen kann, dass eine Oak-Instanz hängen bleibt.
Um dies zu vermeiden, senden Sie die Indizierung an einen Hintergrund-Thread.
Gehen Sie dazu wie folgt vor:

Schritt 1: Neuindizieren in einem Hintergrund-Thread

  1. Legen Sie die folgenden Eigenschaften von fest CRXDE Lite in der Indexdefinition für den Eigenschaftenindex, der für die asynchrone Indizierung aktiviert werden soll:

    code language-none
    /oak:index/property index
    reindex=true
    reindex-async=true
    
  2. Um zu bestätigen, dass die oben genannten den Knoten aktualisieren, sollte async="async-reindex" gesetzt werden.

  3. Rufen Sie die startPropertyIndexAsyncReindex auf PropertyIndexAsyncReindex MBean.

    Dadurch würde der Hintergrundauftrag gestartet, der nach solchen Indextypen suchen würde.

    Nach dem Aufruf sollte eine Neuindizierung der Protokollzeile durchgeführt werden…

  4. Sobald die Neuindizierung abgeschlossen ist, wird die Neuindizierungskennzeichnung auf false.

  5. Führen Sie Schritt 3 erneut aus, um den Index auf einen Synchronisierungsindex zurückzusetzen. Wenn das asynchrone Flag nicht gelöscht wird, muss das MBean möglicherweise mehrmals aufgerufen werden. (Dies kann vorkommen, wenn Änderungen gleichzeitig diesen Index betreffen.)

    Hinweis:  Nur die async="async-reindex" wird entfernt, da dieser steuert, auf welchem Thread die Indizierung erfolgen soll.

    Die reindex-async -Eigenschaft ist nur ein Konfigurationsflag, das sich nicht automatisch ändert.

    Die Idee ist, dass Sie sie einmal für die spezifischen Indexdefinitionen festlegen, die alle zukünftigen Neuindizierungen steuern.

    Es wird dann erwartet, dass es dort drin bleibt und man es nicht mehr anfassen muss.

Schritt 2: Entfernen Sie den Checkpoint für die Neuindizierung (nur AEM 6.2 und ältere Versionen).

Während des Prozesses der asynchronen Neuindizierung wird ein Repository-Checkpoint erstellt.
Nachdem die Indizierungsaufgabe abgeschlossen ist, muss sie wie unten beschrieben freigegeben werden, um eine reibungslose Revisionsbereinigung später sicherzustellen:

  1. Öffnen Sie zunächst die CheckpointManager MBean:

    Auf MongoMK: /system/console/jmx/org.apache.jackrabbit.oak%3Aname%3DDocument+node+store+checkpoint+management%2Ctype%3DCheckpointManger

    Auf TarMK: /system/console/jmx/org.apache.jackrabbit.oak%3Aname%3DSegment+node+store+checkpoint+management%2Ctype%3DCheckpointManger

  2. Rufen Sie die listCheckpoints() Vorgang.

  3. Suchen Sie die Checkpoint-Zeile mit der name=async-reindex-Eigenschaft.

  4. Kopieren Sie den ID-Wert in die Zwischenablage:

    Auf MongoMK sieht es in etwa so aus: r1234567aaaa-0-1

    Auf TarMK sieht es in etwa wie folgt aus: 6eac07d0-fe27-4d16-82f8-6d5da4cefd67

  5. Öffnen Sie dann den releaseCheckpoint()-Vorgang.

  6. Fügen Sie die kopierte ID als p1 ein und klicken Sie auf Aufrufen.

  7. Mit diesem Schritt wird der Checkpoint freigegeben.

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