在AEM 6.x中通報SegmentNotFound時,修正存放庫中的不一致
如果報告SegmentNotFound
時存放庫(repo)不一致,請對存放庫執行一致性檢查,找到最後一個良好的修訂(健康狀態),然後恢復到該版本。
說明 description
環境
Adobe Experience Manager (AEM) 6.x
問題/症狀
在記錄檔中觀察到SegmentNotFound
的例外狀況。
範例:
-
*ERROR*
[
FelixStartLevel]
org.apache.sling.event[
org.apache.sling.event.impl.jobs.queues.QueueManager(1431)]
啟用方法擲回例外狀況(org.apache.jackrabbit.oak.plugins.segment.SegmentNotFoundException:區段da5bcb95-dddddddddddddddddddddddddddddddddddddd0df10a-0af1f10a-0fffff2fffffffffffffffeefeeeee找不到) -
**ERROR*
[
pool-6-thread-3]
org.apache.sling.commons.scheduler.impl.QuartzScheduler在org.apache.jackrabbit.oak.plugins.index.AsyncIndexUpdate@1dc173f9執行工作期間發生例外狀況:找不到區段e669f30b-e886-4b7a-b161-56432601ec6borg.apache.jackrabbit.oak.plugins.segment.SegmentNotFoundException:找不到區段e669f30b-e886-4b7a-b161-56432601ec6b*
解決方法 resolution
對存放庫執行一致性檢查並找到最後一個良好的修訂(健全狀態)並恢復到該存放庫。
請依照下列步驟操作:
-
從 https://mvnrepository.com/artifact/org.apache.jackrabbit/oak-run 下載和您的 Oak 核心版本相符的 Oak-run 版本
-
若要將損壞的區段存放區恢復到其最新的良好狀態,請變更為CQ的工作目錄(包含crx-quickstartfolder的工作目錄)並在中備份所有檔案。/crx-quickstart/repository/segmentstore/。
-
執行一致性檢查,
java -Xmx6000m -jar oak-run-*.jar check --bin=-1 /path/to/crx-quickstart/repository/segmentstore
這會向後搜尋修訂,直到找到一致的修訂:
尋找類似以下內容的訊息:
[
main]
INFO o.a.j.o.p.s.f.t.ConsistencyChecker — 發現最新的良好修訂afdb922d-ba53-4a1b-aa1b-1cb044b535cf:234880 -
透過編輯將存放庫還原到此版本。/crx-quickstart/repository/segmentstore/journal.log ,並刪除包含最新良好修訂的行之後的所有行。
-
移除全部。/crx-quickstart/repository/segmentstore/*.bak檔案。
-
執行查核點清理以移除孤立的檢查點:
java -Xmx6000m -jar oak-run-*.jar checkpoints /path/to/crx-quickstart/repository/segmentstore rm-unreferenced
-
最後,壓縮存放庫:
java -Xmx6000m -jar oak-run-*.jar compact /path/to/crx-quickstart/repository/segmentstore/
原因
由於Oak中的一些舊問題或存放庫中的一些不一致,區段可能會遺失,以及存放庫可能不一致。