Beheben von Beschädigungen mithilfe der CRX-Konsole

Fehler treten auf, wenn Sie eine Konsistenzprüfung und Korrektur auf Ihrem PersistenceManager ausführen.

Wenn Sie consistency check and fix auf Ihrem PersistenceManager ausführen, erhalten Sie einen oder mehrere der folgenden Fehler im Protokoll. (Wahrscheinlich weichen Ihre UUIDs von diesen Fehlern ab.)

  • ChildNode has invalid parent id: 651da1a9-fdbb-49ca-b908-8939d0fb7976 (instead of d3fb8c83-5453-421b-a862-245a4b243af2)
  • NodeState 4ee97820-2137-48e0-b664-f804c34eb24f references inexistent child {}node3_etc_workflow_instances_2009-09-22_delete_asset_497741622317431 with id dd7e1f37-9480-4c40-af45-218db4c48190
  • NodeState '80b19738-b62b-4a6a-af9b-70f245d2a7bc' references inexistent parent uuid '9b353130-29f4-4825-8c20-03f3a8786e5a'
  • javax.jcr.ItemNotFoundException: failed to build path of 46bbf932-3bd1-466d-bf93-7e0c99dc5707: ad09118a-45cb-422d-b201-e0cbc938ade7 has no child entry for 46bbf932-3bd1-466d-bf93-7e0c99dc5707
  • ConsistencyCheck: Not repairable: Node 918fea28-f6ab-42bc-aff4-008d073632db has unknown parent: 42d4bb3e-2107-4560-ad54-f309b0db02dc (ConsistencyCheck.java, line 116)

Oder wenn Sie den Suchindex neu indizieren, schlägt er mit diesem Fehler fehl (mit derselben angezeigten UUID):

NoSuchItemStateException: deadbeef-cafe-babe-cafe-babecafebabe.

Lösung

Wenn Ihr Problem mit einem der oben aufgeführten Probleme übereinstimmt, hilft Ihnen der folgende Prozess dabei, die Beschädigung zu beheben.

Bevor CRX 2.2 erhältlich ist, verwenden Sie die alte CRX-Konsole:

  1. Beenden Sie Ihre CRX-Instanz (die CRX-Konsole funktioniert nicht, während CRX ausgeführt wird)
  2. Möglicherweise werden Sie das richtige Startskript für die Konsole brauchen. Um dies zu tun, bearbeiten Sie server/console.sh und ersetzen Sie die Variable REPOSITORY_HOME="$CONTEXT/crx" durch REPOSITORY_HOME="$CONTEXT/../repository". (Beachten Sie bitte, dass Sie die Zeile nicht einfach an den Anfang des Skripts hinzufügen können, weil CONTEXT möglicherweise davor nicht festgelegt wurde, was dazu führt, dass die Konsole ein anderes Repository verwendet).
  3. Bei CQ5.3/CRX 2.x: kopieren Sie server/lib/common/cq-shared-libs-5.3.4.jar auf server/lib/container
  4. Um die CRX-Konsole in einem Terminalfenster zu starten, geben Sie Folgendes ein:
    crx-quickstart/server./console.sh
  5. Nachdem die Konsolenaufforderung angezeigt wird, geben Sie den folgenden Befehl ein, um sich als Administrator anzumelden:
     login crx.default admin <pwd>

Korrigieren Sie „ChildNode has invalid parent id“

Führen Sie in der CRX-Konsole die folgenden Schritte aus:

  • Wenn Sie beispielsweise diesen Fehler haben:
     ChildNode has invalid parent id: INVALID_PARENT_UUID (instead of EXPECTED_PARENT_UUID)
     

    Führen Sie folgenden Befehl aus, um eine niedriggradige Ansicht des „richtigen“ übergeordneten Knotens zu erhalten:
    stat EXPECTED_PARENT_UUID

    und führen Sie danach einen Stat für jeden untergeordneten Knoten einzeln aus und bestätigen Sie, dass die Parent-ID folgende ist: EXPECTED_PARENT_UUID.
  • Korrigieren Sie die mit falscher ID, indem Sie den Patch-Befehl wie folgt benutzen:
    patch -p EXPECTED_PARENT_UUID CHILD_UUID

Anweisungen zum Korrigieren von „NodeState references inexistent child“

Führen Sie in der CRX-Konsole die folgenden Schritte aus:

  1. Wenn Sie beispielsweise diesen Fehler haben:
    NodeState 4ee97820-2137-48e0-b664-f804c34eb24f references inexistent child {}node3_etc_workflow_instances_2009-09-22_delete_asset_497741622317431 with id dd7e1f37-9480-4c40-af45-218db4c48190
  2. Führen Sie den folgenden Befehl aus, um den Pfad des NodeState-Elements zu bekommen:
    stat 4ee97820-2137-48e0-b664-f804c34eb24f
  3. Verwenden Sie den Pfad, der durch den obigen Befehl ausgegeben wurde, als [path] Argument für diesen Befehl:
    cd [path]
  4. Führen Sie diese Befehle aus, um den fehlenden untergeordneten Knotenhinweis zu entfernen, zu speichern und zu beenden:
    rm -c dd7e1f37-9480-4c40-af45-218db4c48190
    save
    exit
  5. Wenn Sie sich die Ausfallzeiten leisten können, führen Sie eine vollständige Beständigkeitsprüfung und Korrektur des Suchindexes, um den verwaisten Knoten aus Ihrem Suchindex zu entfernen. Weitere Informationen dazu, wie dies durchgeführt wird, finden Sie in diesem Artikel. Fahren Sie andernfalls mit den folgenden Schritten fort.
  6. Stellen Sie sicher, dass CRX an dieser Stelle beendet ist. Erstellen Sie unter crx-quickstart/repository/workspaces/<Arbeitsbereich>/index/ eine Datei mit dem Namen redo_X.log, bei der das X im Dateinamen dem entspricht, was sich am Ende des Dateinamen von crx-quickstart/repository/workspaces/<Arbeitsbereich>/index/indexes_X befindet. Geben Sie in der Datei Folgendes ein:
    1 DEL dd7e1f37-9480-4c40-af45-218db4c48190
    1 COM
  7. Starten Sie CRX
  8. Wenn Sie alles korrekt durchgeführt haben, sollten Sie Protokollmeldungen wie diese in Ihrem logs/crx/error.log sehen, nachdem Sie CRX starten:
    *INFO * Recovery: Found uncommitted redo log. Applying changes now... (Recovery.java, line 82)
    *INFO * Recovery: Redo changes applied. (Recovery.java, line 85)

Reparieren von „references inexistent parent uuid“ und „ConsistencyCheck: Not repairable: Node ... has unknown parent: ...“

Führen Sie in der CRX-Konsole die folgenden Schritte aus:

  1. Wenn Sie beispielsweise diesen Fehler haben:
    NodeState '80b19738-b62b-4a6a-af9b-70f245d2a7bc' references inexistent parent uuid '9b353130-29f4-4825-8c20-03f3a8786e5a'
  2. Führen Sie diese Befehle aus, um den Waisenkindknoten zu entfernen, zu Speichern und zum Beenden des Programms:
    rm [80b19738-b62b-4a6a-af9b-70f245d2a7bc]
    save
    exit
  3. Wenn Sie sich die Ausfallzeiten leisten können, führen Sie eine vollständige Beständigkeitsprüfung und Korrektur des Suchindexes, um den verwaisten Knoten aus Ihrem Suchindex zu entfernen. Weitere Informationen finden Sie in diesem Artikel. Fahren Sie andernfalls mit den folgenden Schritten fort.
  4. Stellen Sie sicher, dass CRX an dieser Stelle beendet ist. Erstellen Sie eine Datei mit dem Namen redo_X.log unter crx-quickstart/repository/workspaces/<workspace>/index/ in der das X im Dateinamen mit dem übereinstimmt, was am Ende des Dateinamen für die Datei crx-quickstart/repository/workspaces/<workspace>/index/indexes_X steht. Geben Sie in der Datei folgendes ein:
    1 DEL 80b19738-b62b-4a6a-af9b-70f245d2a7bc
    1 COM
  5. Starten Sie CRX
  6. Wenn Sie alles korrekt durchgeführt haben, sollten Sie Protokollmeldungen wie diese in Ihrem logs/crx/error.log sehen, nachdem Sie CRX starten:
    *INFO * Recovery: Found uncommitted redo log. Applying changes now... (Recovery.java, line 82)
    *INFO * Recovery: Redo changes applied. (Recovery.java, line 85)

 

Hinweis: Wenn Sie viele zu reparierende Fehlermeldungen haben, können Sie mehrere Elemente in diesen Schritten vorbereiten:

Öffnen Sie im 4. Schritt eine Textdatei und bereiten Sie mehrere rm-Befehle vor. Fügen Sie dann den Inhalt der gesamten Datei in die CRX-Konsole ein, z. B.:
rm [<untergeordnete UUID 1>]
rm [<untergeordnete UUID 2>]
save
exit

In Schritt 6 haben Sie mehrere Elemente im redo_X.log, die wie folgt eingetragen sind:
1 DEL <child uuid 1>
1 DEL <child uuid 2>
1 COM

Sie ersetzen das <child uuid 1> durch die tatsächlichen UUID des untergeordneten Knotens in der Fehlermeldung, was wie im oben gegebenen Beispiel Folgendes ist: 80b19738-b62b-4a6a-af9b-70f245d2a7bc

Reparieren von „javax.jcr.ItemNotFoundException: failed to build path of ... has no child entry for ...“

Führen Sie in der CRX-Konsole die folgenden Schritte aus:

 

  1. Wenn Sie beispielsweise diesen Fehler haben:
     javax.jcr.ItemNotFoundException: failed to build path of 46bbf932-3bd1-466d-bf93-7e0c99dc5707: ad09118a-45cb-422d-b201-e0cbc938ade7 has no child entry for 46bbf932-3bd1-466d-bf93-7e0c99dc5707
  2. Führen Sie diese Befehle aus, um den verwaisten, untergeordneten Knoten zu löschen, zu speichern und die CRX-Konsole zu schließen
    rm [46bbf932-3bd1-466d-bf93-7e0c99dc5707]
    save
    exit

  3. Wenn Sie sich die Ausfallzeiten leisten können, führen Sie eine vollständige Beständigkeitsprüfung und Korrektur des Suchindexes, um den verwaisten Knoten aus Ihrem Suchindex zu entfernen. Weitere Informationen dazu, wie dies durchgeführt wird, finden Sie in diesem Artikel. Fahren Sie andernfalls mit den folgenden Schritten fort.
  4. Erstellen Sie eine Datei mit dem Namen redo_X.log unter crx-quickstart/repository/workspaces/<workspace>/index/ in der das X im Dateinamen mit dem übereinstimmt, was am Ende des Dateinamen für die Datei crx-quickstart/repository/workspaces/<workspace>/index/indexes_X steht. In der Datei geben Sie Folgendes ein:
    1 DEL 46bbf932-3bd1-466d-bf93-7e0c99dc5707
    1 COM
  5. Starten Sie CRX
  6. Wenn Sie alles korrekt durchgeführt haben, sollten Sie Protokollmeldungen wie diese in Ihrem logs/crx/error.log sehen, nachdem Sie CRX starten:
    *INFO * Recovery: Found uncommitted redo log. Applying changes now... (Recovery.java, line 82)
    *INFO * Recovery: Redo changes applied. (Recovery.java, line 85)

Hinweis: Wenn Sie viele zu reparierende Fehlermeldungen haben, können Sie mehrere Elemente in diesen Schritten vorbereiten:

Öffnen Sie im 4. Schritt eine Textdatei und bereiten Sie mehrere rm-Befehle vor. Fügen Sie dann den Inhalt der gesamten Datei in die CRX-Konsole ein, z. B.:
rm [<untergeordnete UUID 1>]
rm [<untergeordnete UUID 2>]
save
exit

In Schritt 6 haben Sie mehrere Elemente im redo_X.log, die wie folgt eingetragen sind:
1 DEL <child uuid 1>
1 DEL <child uuid 2>
1 COM

Sie ersetzen das <child uuid 1> durch die tatsächlichen UUID des untergeordneten Knotens in der Fehlermeldung, was wie im oben gegebenen Beispiel Folgendes ist: 46bbf932-3bd1-466d-bf93-7e0c99dc5707

Reparieren von „NoSuchItemStateException: deadbeef-cafe-babe-cafe-babecafebabe“

Weitere Informationen finden Sie in diesem Artikel

Gilt für

CRX 1.4.x, CRX 2.x

Adobe-Logo

Bei Ihrem Konto anmelden