記錄中已觀察到的 SegmentNotFound 例外狀況。

問題

記錄中已觀察到的 SegmentNotFound 例外狀況。例如:

[1]
*ERROR* [FelixStartLevel] org.apache.sling.event [org.apache.sling.event.impl.jobs.queues.QueueManager(1431)] 啟用方式發生例外狀況 (org.apache.jackrabbit.oak.plugins.segment.SegmentNotFoundException: 找不到區段 da5bcb95-d00a-4c04-a9d9-0f10f2b14e5e)

[2]
*ERROR* [pool-6-thread-3] org.apache.sling.commons.scheduler.impl.QuartzScheduler org.apache.jackrabbit.oak.plugins.index.AsyncIndexUpdate@1dc173f9 工作執行期間發生例外狀況: 找不到區段 e669f30b-e886-4b7a-b161-56432601ec6b
org.apache.jackrabbit.oak.plugins.segment.SegmentNotFoundException: 找不到區段 e669f30b-e886-4b7a-b161-56432601ec6b

環境

AEM 6.0、AEM 6.1、AEM 6.2

原因

由於 Oak 中有些較舊問題或在存放庫中有部分不一致,因此可能會遺失區段,且存放庫可能會不一致。

解決方式

在存放庫執行一致性檢查,找出最新的良好修訂 [狀態健康] 並還原成此版本。請執行下列動作:

  1. 請前往 https://mvnrepository.com/artifact/org.apache.jackrabbit/oak-run 下載與您 Oak 核心版本相符的 Oak 執行版本。

    註解:

    若為 AEM 6.0 執行個體,請使用 Oak 執行版本 (oak-run-1.1.7.jar 或更新版本),這些版本具備全新的檢查執行模式 https://github.com/apache/jackrabbit-oak/blob/trunk/oak-run/README.md#check
    。這可協助檢查區段節點儲存區不一致的情況。

  2. 若要將損壞的區段儲存區還原成最新的良好狀態,請變更為 CQ 的工作目錄 (包含 crx-quickstartfolder) 並備份位於 ./crx-quickstart/repository/segmentstore/ 中的所有檔案。

  3. 執行一致性檢查
    java -Xmx6000m -jar oak-run-*.jar check -d1 -p /path/to/crx-quickstart/repository/segmentstore

    此檢查過程會往回搜尋整個修訂,直到找到一致的內容:
    尋找類似下列內容的訊息:
    [main] INFO o.a.j.o.p.s.f.t.ConsistencyChecker - 已找到最新的良好修訂 afdb922d-ba53-4a1b-aa1b-1cb044b535cf:234880

  4. 將存放庫還原成此修訂版本,只要透過編輯 ./crx-quickstart/repository/segmentstore/journal.log 並刪除在包含最新良好修訂那一行之後的每一行內容即可。

  5. 移除所有的 ./crx-quickstart/repository/segmentstore/*.bak 檔案。

  6. 執行檢查點清理,以移除孤立的檢查點:

    java -Xmx6000m -jar oak-run-*.jar checkpoints /path/to/crx-quickstart/repository/segmentstore rm-unreferenced

  7. 最後,壓縮存放庫:

    java Xmx6000m -jar oak-run-*.jar compact /path/to/crx-quickstart/repository/segmentstore/

此産品由 Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License 授權  Creative Commons 條款未涵蓋 Twitter™ 與 Facebook 文章。

法律說明   |   線上隱私權政策