Problem
Beim Ausführen der DataStore-Abfallsammlung (Blob GC in einem FileDataStore), sehen wir den folgenden markedTimestamp Fehler:
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)
Umgebung
AEM 6.1 + Oak 1.2.20 oder früher.
Ursache
Dieser Fehler wurde in 1.2.21 (OAK-5078) korregiert. Dies liegt daran, dass die Pfade in der FileDataStore-Konfiguration relativ sind.
Lösung
Es gibt zwei mögliche Lösungen:
Setzen Sie den Datastore-Pfad auf einen absoluten Pfad.
- Melden Sie sich bei dem Server an, auf dem AEM installiert ist.
- Öffnen Sie das Verzeichnis crx-quickstart/install.
- Öffnen Sie die Datei org.apache.jackrabbit.oak.plugins.blob.datastore.FileDataStore.cfg oder org.apache.jackrabbit.oak.plugins.blob.datastore.FileDataStore.config unter crx-quickstart/install.
- Bearbeiten Sie die Pfadvariable und legen Sie den Pfad auf einen absoluten Pfad zum Datastore fest, anstatt auf einen relativen Pfad.
Beispiel:
Zuvor: path=./crx-quickstart/repository/datastore
Danach: path=/opt/aem/author/crx-quickstart/repository/datastore.
B. Aktualisieren Sie AEM oder aktualisieren Sie Oak auf Version 1.2.21 oder eine spätere Version.
Aktualisieren Sie entweder auf AEM6.2 oder höher oder installieren Sie den neuesten Oak-Hotfix von hier:
https://helpx.adobe.com/de/experience-manager/kb/aem61-available-hotfixes.html.