Problème

L'un des messages suivants apparaît dans votre error.log :

*WARN * BLOBInDataStore: getSize for a586f73ec77fba3135021af01c7f09d972eb3e01 failed (BLOBInDataStore.java, line 95)
org.apache.jackrabbit.core.data.DataStoreException: Record not found: a586f73ec77fba3135021af01c7f09d972eb3e01

org.apache.jackrabbit.core.data.DataStoreException: Failed to read record modified date: /opt/author/crx-quickstart/repository/shared/repository/datastore/6f/b6/14/6fb61425b9187a97f9404cee290cc255177c702e

Caused by: java.io.FileNotFoundException: /opt/author/crx-quickstart/repository/shared/repository/datastore/6f/b6/14/6fb61425b9187a97f9404cee290cc255177c702e
at org.apache.jackrabbit.core.data.LazyFileInputStream.<init>(LazyFileInputStream.java:63)
at org.apache.jackrabbit.core.data.FileDataRecord.getStream(FileDataRecord.java:57)
... 114 more

Solution

Cette erreur signifie qu'il manque des fichiers dans le répertoire de banque de données AEM.  Consulter la documentation pour plus de détails sur ce qu'est la banque de données et son fonctionnement. La perte des fichiers de banque de données peut être due à un échec de nettoyage de mémoire dans la banque de données, à une panne d'espace disque, à l'instabilité du disque ou du partage du réseau. Sinon, elle peut être due à une suppression incorrecte des fichiers du serveur.

Pour récupérer les fichiers manquants, suivez les étapes ci-dessous.

1. Installez le dernier correctif CRX.

Avant de poursuivre, si vous utilisez CQ 5.4 ou une version anterieure, téléchargz le dernier correctif CRX et installez-le si votre instance CQ est au point de démarrage.

Vous pouvez trouver les derniers correctifs sur Adobe Package Share.

2. Corrigez les erreurs « Fichier introuvable : ».

S'il existe des fichiers tar manquants comme décrits dans cet article, adressez le problème en premier.  S’il manque des fichiers tar, il est probable que certaines erreurs telles que « Fichier introuvable : » se trouvent dans error.log.

Par exemple, voici quelques erreurs qui ont été affichées lors de GC de la banque de données en raison d’un fichier tar manquant :

27.02.2012 13:55:01 *WARN * TarSet: File not found: 4650 for entry 6c18a73a-aba1-44b8-93c2-90fb49cac5e5 pos:4650/148692992 length: 669 from /opt/author/crx-quickstart/repository/workspaces/crx.default/copy [4651, 4652, 4653, 4654, 4655, 4656, 4657, 4658, 4659, 4660, 4661, 4662, 4663].
27.02.2012 13:55:38 *INFO * FileDataStore: Deleting old file /opt/author/crx-quickstart/repository/shared/repository/datastore/6f/b6/14/6fb61425b9187a97f9404cee290cc255177c702e modified: 2012-02-23 10:06:58.0 length: 6555 (FileDataStore.java, line 315)
28.02.2012 10:49:46 *WARN * BLOBInDataStore: getSize for 6fb61425b9187a97f9404cee290cc255177c702e failed (BLOBInDataStore.java, line 95)
org.apache.jackrabbit.core.data.DataStoreException: Failed to read record modified date: /opt/author/crx-quickstart/repository/shared/repository/datastore/6f/b6/14/6fb61425b9187a97f9404cee290cc255177c702e

3. Exécutez une vérification de cohérence de la banque de données.

Le seul moyen d’obtenir une liste complète de tous les fichiers manquants dans la banque de données est d’exécuter un contrôle de cohérence du stock de données.  Si l’instance AEM peut démarrer, procédez comme suit sur l’instance en cours d'exécution :

  1. Accédez à CRX Explorer et connectez-vous en tant qu’administrateur.
    - http://<host>:<port>/crx (CQ5.4/CRX2.2 et versions antérieures)
    - http://<host>:<port>/crx/explorer/index.jsp (CQ5.5/CRX2.3 et versions ultérieures)
  2. Cliquez sur Configuration du référentiel.
  3. Cliquez sur Vérifiez le référentiel.
  4. Sélectionner la Cohérence du magasin de données.
  5. Cliquez sur Exécuter.
  6. Gardez le navigateur ouvert pendant toute la durée du processus. Il envoie uniquement des messages à l’écran lorsqu’une erreur est détectée et que le processus n’écrit aucun message dans le fichier journal.  Les messages d’erreur signalent le chemin d’accès au nœud où l’enregistrement de banque de données a été référencé et l’ID d’enregistrement du fichier manquant.
  7. Une fois le processus terminé, copiez la sortie dans un fichier texte consistency_check_output.txt et passez à l'étape suivante.

4. Créez une liste de chemins d'accès de fichiers manquants.

L’étape suivante de la récupération des fichiers manquants consiste à compiler une liste complète des chemins d’accès des fichiers manquants.

1. Recherchez une sortie de vérification de cohérence pour toutes les occurrences d'erreur « enregistrement introuvable ».

a. Sous Linux ou Unix : utilisez cette commande pour sortir la liste des fichiers manquants dans un fichier missing_ds_files.txt :

grep "Record not found:" consistency_check_output.txt | grep -Eo "[0-9a-f]{40}" | awk '{ print substr($1, 0,2) "/" substr($1, 3,2) "/" substr($1, 5,2) "/" $1 }' | sort -u > missing_ds_files.txt

** Si votre instance AEM ne démarre pas en raison de la présence d'erreurs du type « enregistrement introuvable », recherchez dans vos fichiers journal sous crx-quickstart/logs toutes les occurrences de l'erreur « enregistrement introuvable » à la place :

grep "Record not found:" error.log* | grep -Eo "[0-9a-f]{40}" | awk '{ print substr($1, 0,2) "/" substr($1, 3,2) "/" substr($1, 5,2) "/" $1 }' | sort -u > missing_ds_files.txt

Si la commande a fonctionné correctement, le contenu de missing_ds_files.txt serait similaire à ce qui suit :

12/92/04/129204a6dd0ce2cd5ca19c721b6f52ee2b3630e2
9f/d8/38/9fd8386d20cf55e7e0024e18d0c7d4e8400454ee
7a/13/15/7a1315788f45dafd6630454f04183601682a9f80
28/37/d2/2837d24aed3ff223cd40e90222226c4ef2e2a0c6

  b. Sous Windows : utilisez un éditeur de texte tel que Textpad ou Notepad + + pour trouver toutes les occurrences de « enregistrement introuvable ».  Ensuite, après avoir trouvé toutes ces occurrences, extrayez les noms de fichier à l’aide d’une macro, rédigez un script ou copiez et construisez manuellement les noms de fichier dans un nouveau fichier texte.

Les chemins d'accès des instances Datastore sont formés du nom d'enregistrement au format suivant :
{first two chars of record id}/{second two chars of record id}/{third two chars of record id}/{record id}

Par exemple, dans cette erreur :

error.log: org.apache.jackrabbit.core.data.DataStoreException: Record not found: 129204a6dd0ce2cd5ca19c721b6f52ee2b3630e2

l'identifiant de l'enregistrement est 129204a6dd0ce2cd5ca19c721b6f52ee2b3630e2 et le chemin d'accès est 12/92/04/129204a6dd0ce2cd5ca19c721b6f52ee2b3630e2

5. Récupérez les fichiers manquants

Utilisez maintenant la sortie de la dernière étape pour retrouver les mêmes fichiers dans d’autres instances AEM (CQ) de l'environnement.  Vu que les fichiers de banque de données sont stockés de manière unique, vous pouvez les copier à partir d’autres instances AEM dans l'environnement.

Si vous ne parvenez pas à trouver certains fichiers dans d’autres instances, effectuez une recherche sur les sauvegardes et restaurez-les si possible.

Sous Linux, vous pouvez vous connecter à chacune des instances de travail AEM et utilisez une commande comme rsync pour copier les fichiers manquants qui y existent.  Par exemple, en l’exécutant à partir du répertoire de banque de données sur le serveur disposant des fichiers manquants :

rsync -avR --files-from=missing_ds_files.txt . user@hostname-of-server-missing-files:/path/to/crx-quickstart/repository/repository/datastore/

La commande exécute un fichier rsync qui se copie sur des fichiers répertoriés dans missing_ds_files.txt qui existent dans le serveur. 

6. Nettoyez les références de fichiers irrécupérables

Si vous n’avez pas pu récupérer certains des fichiers de la sauvegarde ou d’autres instances AEM (CQ), nettoyez ou corrigez les références de banque de données erronées.  Réexécutez le contrôle de cohérence du stock de données à mesure comme à l’étape 4.  Vous obtenez une liste actuelle des fichiers manquants.

Examinez chacun des chemins de noeud répertoriés qui font référence aux fichiers de banque de données manquants.  Examinez tous les fichiers ou éléments DAM manquants téléchargés sur les pages avec l’utilisateur.  Demandez-leur de télécharger tout document manquant dont ils ont besoin.  Tout ce dont ils n’ont pas besoin peut être supprimé en toute sécurité via l’interface utilisateur AEM.  Si quelque chose manque sous /var/audit ou /var/eventing, vous pouvez le supprimer en toute sécurité.  Pour les fichiers dont vous n'êtes pas sûr, allez ici et contacter l'équipe d'assistance d'AEM pour obtenir de l'aide.

S’applique à

CRX 2.2, 2.3

Ce produit est distribué sous licence Creative Commons Attribution - Pas d’utilisation commerciale - Partage à l’identique 3.0 non transposé  Les publications Twitter™ et Facebook ne sont pas couvertes par les dispositions Creative Commons.

Mentions légales   |   Politique de confidentialité en ligne