Correction des corruptions du référentiel à l'aide de la console CRX

Des erreurs se produisent lors de l’exécution d’une vérification de cohérence et des corrections effectuées dans le gestionnaire PersistenceManager.

Lorsque vous exécutez une vérification de cohérence et apportez des corrections au gestionnaire PersistenceManager, vous obtenez une ou plusieurs des erreurs suivantes dans le journal. (Il est probable que vos uuids diffèrent de ces erreurs.)

  • 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)

Ou, si vous réindexez l’index de recherche, il risque d’échouer avec cette erreur (avec le même uuid affiché) :

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

Solution

Si votre problème correspond à ceux répertoriés ci-dessus, le processus suivant vous aidera à corriger la corruption.

Pour les versions jusqu'à CRX 2.2, utilisez l'ancienne console CRX :

  1. Arrêtez l'instance CRX (la console CRX ne fonctionne pas lorsque CRX est en cours d’exécution).
  2. Vous devrez peut-être corriger le script de démarrage pour la console. Pour ce faire, modifiez server/console.sh, puis remplacez la variable REPOSITORY_HOME="$CONTEXT/crx" par REPOSITORY_HOME="$CONTEXT/../repository". (Vous ne pouvez pas simplement ajouter la ligne en haut du script, car le contexte pourrait ne pas être placé avant celle-ci, et dans ce cas, la console pourrait utiliser un référentiel différent).
  3. Pour CQ5.3/CRX 2.x : copier server/lib/common/cq-shared-libs-5.3.4.jar dans server/lib/container
  4. Pour démarrer la console CRX, saisissez l'entrée suivante dans une fenêtre du terminal :
    crx-quickstart/server./console.sh
  5. Une fois l'invite de console affichée, entrez la commande suivante pour vous connecter en tant qu'admin :
     login crx.default admin <pwd>

Corrigez « ChildNode has invalid parent id »

Dans la console CRX, procédez comme suit :

  • Par exemple, si vous recevez cette erreur :
    ChildNode has invalid parent id: INVALID_PARENT_UUID (instead of EXPECTED_PARENT_UUID)

    exécutez cette commande pour obtenir une vue de bas niveau du noeud parent ’correct’ :
    ststat EXPECTED_PARENT_UUID

    puis exécutez une statistique pour chacun des nœuds enfants et vérifiez que le parentId est EXPECTED_PARENT_UUID.
  • Définissez celles dont l'ID est fausse à l'aide de la commande corrective suivante :
    patch -p EXPECTED_PARENT_UUID CHILD_UUID

Comment résoudre "NodeState references inexistent child"

Dans la console CRX, procédez comme suit :

  1. Par exemple, si vous avez rencontré cette erreur :
    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. Exécuter cette commande pour obtenir le chemin du NodeState item
    stat 4ee97820-2137-48e0-b664-f804c34eb24f
  3. Utiliser le chemin généré par la commande ci-dessus en tant qu'argument de [chemin] pour cette commande :
    cd [path]
  4. Exécutez ces commandes pour supprimer la référence du nœud enfant manquant, enregistrer et fermer :
    rm -c dd7e1f37-9480-4c40-af45-218db4c48190
    save
    exit
  5. Si vous avez le temps, effectuez une vérification complète de la cohérence de l'index de recherche et corrigez-la pour supprimer le nœud orphelin de l'index de recherche. Consultez cet article pour cette procédure. Sinon, passez aux étapes suivantes.
  6. Vérifiez que CRX est arrêté à ce stade. Créez un fichier nommé redo_X.log sous crx-quickstart/repository/workspaces/<workspace>/index/ où le X dans le nom de fichier correspond à l’élément qui se trouve à la fin du nom de fichier pour le dossier crx-quickstart/repository/workspaces/<workspace>/index/indexes_X Dans le fichier, entrez :
    1 DEL dd7e1f37-9480-4c40-af45-218db4c48190
    1 COM
  7. Démarrez CRX
  8. Si tout a été fait correctement, les messages de journal de ce type doivent s'afficher dans vos journaux /crx/error.log au démarrage du CRX :
    *INFO * Recovery: Found uncommitted redo log. Applying changes now... (Recovery.java, line 82)
    *INFO * Recovery: Redo changes applied. (Recovery.java, line 85)

Réparez "references inexistent parent uuid" et "ConsistencyCheck: Not repairable: Node ... has unknown parent: ..."

Dans la console CRX, procédez comme suit :

  1. Par exemple, si vous recevez cette erreur :
    NodeState '80b19738-b62b-4a6a-af9b-70f245d2a7bc' references inexistent parent uuid '9b353130-29f4-4825-8c20-03f3a8786e5a'
  2. Exécutez ces commandes pour supprimer les noeuds enfants orphelins, enregistrez et quittez :
    rm [80b19738-b62b-4a6a-af9b-70f245d2a7bc]
    enregistrer
    sortir
  3. Si vous avez le temps, effectuez une vérification complète de la cohérence de l'index de recherche et corrigez-la pour supprimer le nœud orphelin de l'index de recherche. Consultez cet article pour la marche à suivre. Sinon, passez aux étapes suivantes.
  4. Vérifiez que CRX est arrêté à ce stade. Créez un fichier appelé redo_X.log sous crx-quickstart/repository/workspaces/<workspace>/index/ où le X du nom de fichier correspond à ce qui se trouve à la fin de celui du fichier crx-quickstart/repository/workspaces/<workspace>/index/indexes_X file. Entrez ce qui suit dans le fichier :
    1 DEL 80b19738-b62b-4a6a-af9b-70f245d2a7bc
    1 COM
  5. Démarrez CRX
  6. Si tout a été fait correctement, vous devriez voir des messages de journal de ce type dans logs/crx/error.log au démarrage du CRX :
    *INFO * Recovery: Found uncommitted redo log. Applying changes now... (Recovery.java, line 82)
    *INFO * Recovery: Redo changes applied. (Recovery.java, line 85)

 

Remarque  Si vous avez de nombreuses erreurs à corriger, vous pouvez préparer des éléments multiples dans les étapes suivantes :

À l'étape 4, ouvrez un fichier texte et préparez plusieurs commandes rm, collez la totalité du contenu du fichier dans la console CRX, par exemple :
rm [<child uuid 1>]
rm [<child uuid 2>]
save
exit

À l'étape 6, vous trouverez plusieurs éléments dans redo_X.log. Saisissez :
1 DEL <child uuid 1>
1 DEL <child uuid 2>
1 COM

Remplacez <child uuid 1> par les uuids réels du nœud enfant dans le message d'erreur. Dans l'exemple donné ci-dessus, cela serait : 80b19738-b62b-4a6a-af9b-70f245d2a7bc

Corrigez "javax.jcr.ItemNotFoundException: failed to build path of ... has no child entry for ..."

Dans la console CRX, procédez comme suit :

 

  1. Par exemple, si vous rencontrez cette erreur :
    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. Exécutez ces commandes pour supprimer le nœud enfant orphelin, enregistrez et quittez la console crx
    rm [46bbf932-3bd1-466d-bf93-7e0c99dc5707]
    save
    exit

  3. Si vous avez le temps, effectuez une vérification complète de la cohérence de l'index de recherche et corrigez-la pour supprimer le nœud orphelin de l'index de recherche. Consultez cet article pour cette procédure. Sinon, passez aux étapes suivantes.
  4. Assurez-vous que le CRX est arrêté à ce stade. Créez un fichier nommé redo_X.log sous crx-quickstart/repository/workspaces/<workspace>/index/ où le X dans le nom de fichier correspond à ce qui se trouve à la fin du nom du fichier pour le fichier crx-quickstart/repository/workspaces/<workspace>/index/indexes_X. Entrez ce qui suit dans le fichier :
    1 DEL 46bbf932-3bd1-466d-bf93-7e0c99dc5707
    1 COM
  5. Démarrez CRX
  6. Si tout a été fait correctement, les messages de journal de ce type doivent s'afficher dans vos journaux /crx/error.log au démarrage du CRX :
    *INFO * Recovery: Found uncommitted redo log. Applying changes now... (Recovery.java, line 82)
    *INFO * Recovery: Redo changes applied. (Recovery.java, line 85)

Remarque : Si vous avez de nombreuses erreurs à corriger, vous pouvez préparer des éléments multiples dans les étapes suivantes :

À l'étape 4, ouvrez un fichier texte et préparez plusieurs commandes rm, collez la totalité du contenu du fichier dans la console CRX, par exemple :
rm [<child uuid 1>]
rm [<child uuid 2>]
save
exit

À l'étape 6, vous trouverez plusieurs éléments dans redo_X.log. Saisissez :
1 DEL <child uuid 1>
1 DEL <child uuid 2>
1 COM

Remplacez <child uuid 1> par les uuids réels du nœud enfant dans le message d'erreur. Dans l'exemple ci-dessus : 46bbf932-3bd1-466d-bf93-7e0c99dc5707

Comment corriger "NoSuchItemStateException: deadbeef-cafe-babe-cafe-babecafebabe"

Consultez cet article

Application

CRX 1.4.x, CRX 2.x

 Adobe

Recevez de l’aide plus rapidement et plus facilement

Nouvel utilisateur ?