AEM/AEM Formsでのインデックスの破損の回避と修正
AEM/AEM forms でインデックスの破損が発生した場合、この記事では、リポジトリに含まれるインデックスデータを削除し、破損したインデックスを再インデックスする方法を示し、問題を解決する方法を説明します。
説明 description
環境
Experience Manager Forms
問題/症状
インデックスの破損を経験することは、非常に珍しいケースです。 ただし、発生した場合は、次のようなログエントリが表示されます。17.01.2019 17:55:47.374 *WARN* [ pool-118-thread-4] org.apache.jackrabbit.oak.plugins.index.AsyncIndexUpdate [ async] The index update failed
org.apache.jackrabbit.oak.api.CommitFailedException: OakMerge0001: OakMerge0001: Failed to merge changes to the underlying store (retries 5, 5169 ms)
at org.apache.jackrabbit.oak.spi.state.AbstractNodeStoreBranch.merge0(AbstractNodeStoreBranch.java:345)
at org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreBranch.merge(DocumentNodeStoreBranch.java:156)
at org.apache.jackrabbit.oak.plugins.document.DocumentRootBuilder.merge(DocumentRootBuilder.java:160)
at org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore.merge(DocumentNodeStore.java:1588)
at org.apache.jackrabbit.oak.plugins.index.AsyncIndexUpdate.mergeWithConcurrencyCheck(AsyncIndexUpdate.java:581)
at org.apache.jackrabbit.oak.plugins.index.AsyncIndexUpdate.updateIndex(AsyncIndexUpdate.java:525)
at org.apache.jackrabbit.oak.plugins.index.AsyncIndexUpdate.runWhenPermitted(AsyncIndexUpdate.java:431)
at org.apache.jackrabbit.oak.plugins.index.AsyncIndexUpdate.run(AsyncIndexUpdate.java:323)
at org.apache.sling.commons.scheduler.impl.QuartzJobExecutor.execute(QuartzJobExecutor.java:115)
at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1164)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:634)
解決策 resolution
この状況に直面した場合、おそらくこの問題を解決する最も速い方法は、リポジトリに含まれるインデックスデータを削除し、破損したインデックスを再インデックスすることです。
注意:インデックスの再作成は、インデックスを使用する例では、時間とリソースを消費するアクションです "workflowDataLucene"
インデックスデータを削除します。
インデックスデータは、以下のリポジトリにあります。 /oak:index/workflowDataLucene
非表示のノードの場合、破損したインデックスを削除するには、次の手順を実行する必要があります。
- インデックス定義(のみ)を新しい場所にコピーします。
- 全体を削除
/oak:index/workflowDataLucene
ノード構造。 - 再作成
/oak:index/workflowDataLucene
トリガーインデックス。
回避策:
回避策として、インデックスを削除する代わりに、非アクティブ化し、同じ定義を持つ新しいインデックスを作成できます。
- 破損したインデックスと同じインデックス定義を持つ新しいインデックスを作成します
- トリガーの新しいインデックスの再インデックス
- type プロパティを「disabled」に変更して、破損したインデックスを非アクティブ化します。
この変更が完了すると、すべてのクエリが新しいインデックスに移動します
RDB からデータを削除します。
最後の手段として、また、次に実行する場合 RDBmk
を使用すると、次のようなクエリを使用して、分析を実行し、データベースから直接インデックスデータを削除できます。
DELETE
FROM
NODES
WHERE
ID =
'2:/oak:index/workflowDataLucene'
OR
ID
LIKE
'3:/oak:index/workflowDataLucene/%'
OR
ID
LIKE
'4:/oak:index/workflowDataLucene/%'
OR
ID
LIKE
'5:/oak:index/workflowDataLucene/%'
OR
ID
LIKE
'6:/oak:index/workflowDataLucene/%'
OR
ID
LIKE
'7:/oak:index/workflowDataLucene/%'
OR
ID
LIKE
'8:/oak:index/workflowDataLucene/%'
OR
ID
LIKE
'9:/oak:index/workflowDataLucene/%'
OR
ID
LIKE
'10:/oak:index/workflowDataLucene/%'
OR
ID
LIKE
'5:p/oak:index/workflowDataLucene/%'
OR
ID
LIKE
'6:p/oak:index/workflowDataLucene/%'
OR
ID
LIKE
'7:p/oak:index/workflowDataLucene/%'
OR
ID
LIKE
'8:p/oak:index/workflowDataLucene/%'
OR
ID
LIKE
'9:p/oak:index/workflowDataLucene/%'
OR
ID
LIKE
'10:p/oak:index/workflowDataLucene/%'
OR
ID
LIKE
'11:p/oak:index/workflowDataLucene/%'
OR
ID
LIKE
'12:p/oak:index/workflowDataLucene/%'
OR
このパスに移動する場合は、変更が必要になる場合があるので、クエリを実行する前に必ずクエリを確認してください
注意: AEMはシャットダウンし、ローカルの永続キャッシュとインデックスファイル (<
crx-quickstart>
/repository/cache および <
crx-quickstart>
/repository/index) を削除してから、AEMを開始します。