透過oak-run執行資料存放區一致性檢查

說明

環境

  • Adobe Experience Manager 6.4
  • Oak 1.8.8及更新版本

問題/症狀
當您發現類似以下的錯誤時,oak-run工具會有所幫助:

09.11.2017 13:42:17.512 *WARN* async-index-update-async org.apache.jackrabbit.oak.plugins.blob.datastore.DataStoreBlobStore Error occurred while loading bytes from steam while fetching for id «record ID»

java.util.concurrent.ExecutionException: java.io.IOException: org.apache.jackrabbit.core.data.DataStoreException: Record «record ID» does not exist

Caused by: java.io.IOException: org.apache.jackrabbit.core.data.DataStoreException: Record «record ID» does not exist

不同於 /system/console/repositorycheck UI, oak-run工具會檢查下方隱藏的Lucene索引檔案 /oak: 索引,以及其餘的內容路徑。  此工具允許您選擇將索引檔案還原到資料儲存,或僅重建損壞的索引,而不是重新索引所有索引。 此檔案記錄於 使用oak-run.jar管理索引 在AEM FoundationTutorials中。

解析度

  1. 下載 Oak-run jar 1.8.8 或更高版本到您的 AEM 伺服器。

  2. 執行以下命令 (但交換區段存放區和資料存放區的路徑以和您的環境相符):

    java -jar oak-run-*.jar datastorecheck --consistency --ref --id --fds crx-quickstart/install/org.apache.jackrabbit.oak.plugins.blob.datastore.FileDataStore.config --repoHome crx-quickstart/repository --store crx-quickstart/repository/segmentstore --dump temp --verbose --track

  3. 命令將輸出資料儲存一致性檢查。

  4. 使用輸出還原或修復任何缺少的檔案。 詳情如下 使用oak-run.jar管理索引 在AEM FoundationTutorials中。

DataStore的一致性檢查器還可以列出節點儲存中的所有blob引用以及資料儲存中可用的所有blob ID。 使用以下命令:

$ java -jar oak-run-*.jar datastorecheck --id --ref --consistency \

--store | \

--s3ds |--fds \

--dump \

--track

提供下列一或多個可用選項:

  • -id — 列出資料儲存區中的所有id。
  • -ref — 列出節點儲存區中的所有blob參照。
  • — 一致性 — 通過一致性檢查列出所有缺少的blob。

下列選項可供選擇:

  • -store - mongo uri段儲存的路徑(上述「 — ref」和「 — consistency」選項的必需)。
  • —dump — 轉儲檔案的路徑(可選)。 否則,會在使用者 tmp 目錄中傾印檔案。
  • -s3ds - S3DataStore配置檔案的路徑。
  • -fds - FileDataStore配置檔案的路徑(「path」屬性是必需的)。
  • -track — 本機存放庫首頁資料夾的路徑(可選)。 它會放置要追踪的已下載 blob id 的副本。

更多相關資訊

Oak DataStore 檢查

本頁內容