問題点

データストアのガベージコレクション(FileDataStore に対する Blob GC)を実行すると、次のような markedTimestamp エラーが発生します。

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)

環境

AEM 6.1 + Oak 1.2.20 以前

原因

このエラーは、1.2.21(OAK-5078)で修正されました。原因は、FileDataStore 設定のパスに相対パスが使用されていることにあります。

解決策

2 つの解決策があります。

A. データストアのパスを絶対パスに設定する

  1. AEM がインストールされているサーバーにログインします。
  2. crx-quickstart/install ディレクトリを開きます。
  3. crx-quickstart/install の下の org.apache.jackrabbit.oak.plugins.blob.datastore.FileDataStore.cfg または org.apache.jackrabbit.oak.plugins.blob.datastore.FileDataStore.config ファイルを開きます。
  4. パス変数を編集し、パスをデータストアへの相対パスではなく絶対パスに設定します。

例:

変更前:path=./crx-quickstart/repository/datastore

変更後:path=/opt/aem/author/crx-quickstart/repository/datastore

B. AEM をアップグレードするか、Oak を 1.2.21 以降のバージョンにアップデートする

AEM6.2 以降にアップグレードするか、次の URL から最新の Oak ホットフィックスを適用します。
https://helpx.adobe.com/jp/experience-manager/kb/aem61-available-hotfixes.html

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

法律上の注意   |   プライバシーポリシー