L’erreur d’enregistrement d'horodatage n’existe pas au cours du nettoyage de la mémoire d'entrepôt de données

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

Logo Adobe

Accéder à votre compte