Problème

Lorsque vous exécutez le nettoyage de la mémoire d'entrepôt de données (Blob GC sur FileDataStore), nous constatons l’erreur d'horodatage ci-dessous :

05.06.2017 21:50:22.425 *WARN* [pool-6-thread-19] org.apache.jackrabbit.oak.plugins.blob.datastore.DataStoreBlobStore Error occurred while fetching DataRecord for identifier markedTimestamp-f38d7f8c-1371-4080-a59c-4bf532526500
org.apache.jackrabbit.core.data.DataStoreException: Record markedTimestamp-f38d7f8c-1371-4080-a59c-4bf532526500 does not exist
at org.apache.jackrabbit.core.data.AbstractDataStore.getRecord(AbstractDataStore.java:47)
at org.apache.jackrabbit.oak.plugins.blob.datastore.DataStoreBlobStore$3.apply(DataStoreBlobStore.java:354)
at org.apache.jackrabbit.oak.plugins.blob.datastore.DataStoreBlobStore$3.apply(DataStoreBlobStore.java:349)
at com.google.common.collect.Iterators$8.transform(Iterators.java:794)
at com.google.common.collect.TransformedIterator.next(TransformedIterator.java:48)
at com.google.common.collect.Iterators$7.computeNext(Iterators.java:646)
at com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:143)
at com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:138)
at com.google.common.collect.TransformedIterator.hasNext(TransformedIterator.java:43)
at org.apache.jackrabbit.oak.plugins.blob.MarkSweepGarbageCollector$BlobIdRetriever.call(MarkSweepGarbageCollector.java:543)
at org.apache.jackrabbit.oak.plugins.blob.MarkSweepGarbageCollector.sweep(MarkSweepGarbageCollector.java:360)
at org.apache.jackrabbit.oak.plugins.blob.MarkSweepGarbageCollector.markAndSweep(MarkSweepGarbageCollector.java:241)
at org.apache.jackrabbit.oak.plugins.blob.MarkSweepGarbageCollector.collectGarbage(MarkSweepGarbageCollector.java:158)
at org.apache.jackrabbit.oak.plugins.blob.BlobGC$1.call(BlobGC.java:83)
at org.apache.jackrabbit.oak.plugins.blob.BlobGC$1.call(BlobGC.java:79)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)

Environnement

AEM 6.1 et Oak 1.2.20 ou version antérieure.

Cause

Cette erreur a été corrigée dans 1.2.21 (OAK -5078). En effet, les chemins d’accès de la configuration FileDataStore sont relatifs.

Résolution

Il existe deux solutions possibles :

A. Définir le chemin de l'entrepôt de données à un chemin absolu.

  1. Connectez-vous au serveur sur lequel AEM est installé.
  2. Ouvrez le répertoire crx-quickstart/install.
  3. Ouvrez le fichier org.apache.jackrabbit.oak.plugins.blob.datastore.FileDataStore.cfg ou org.apache.jackrabbit.oak.plugins.blob.datastore.FileDataStore.config sous crx-quickstart/install.
  4. Modifiez la variable path et définissez un chemin absolu vers le référentiel de données au lieu d’un chemin relatif.

Par exemple :

Avant : path=./crx-quickstart/repository/datastore

Après : path=/opt/aem/author/crx-quickstart/repository/datastore

B. Mettre à niveau AEM ou mettre à jour Oak vers 1.2.21 ou version ultérieure.

Procédez à une mise à jour vers AEM6.2 ou une version plus récente, ou appliquez le dernier correctif Oak depuis :
https://helpx.adobe.com/fr/experience-manager/kb/aem61-available-hotfixes.html

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