Beheben und Korrigieren von Indexbeschädigungen in AEM/AEM Forms
Wenn jemand das Problem der Indexbeschädigung in den AEM/AEM Formularen feststellt, hilft Ihnen dieser Artikel bei der Lösung des Problems, indem er zeigt, wie die im Repository enthaltenen Indexdaten gelöscht und der beschädigte Index neu indiziert werden.
Beschreibung description
Umgebung
Experience Manager Forms
Problem/Symptome
Eine Indexbeschädigung zu erleben ist ein sehr ungewöhnlicher Fall. In diesem Fall werden jedoch Protokolleinträge ähnlich wie folgt angezeigt: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)
Auflösung resolution
Wenn jemand mit dieser Situation konfrontiert ist, ist die wahrscheinlich schnellste Möglichkeit, dieses Problem zu lösen, indem die im Repository enthaltenen Indexdaten gelöscht und der beschädigte Index neu indiziert werden.
HINWEIS: Die Neuindizierung ist eine zeitaufwendige und ressourcenintensive Aktion für diese Beispiele. Wir werden den Index verwenden "workflowDataLucene"
Indexdaten löschen:
Die Indexdaten befinden sich im Repository unter /oak:index/workflowDataLucene
als ausgeblendete Knoten verwenden. Um den beschädigten Index zu löschen, müssen Sie daher:
- Kopieren Sie die Indexdefinition (nur) an einen neuen Speicherort.
- Gesamte löschen
/oak:index/workflowDataLucene
Knotenstruktur. - Neu erstellen
/oak:index/workflowDataLucene
und "tirgger reindex".
Problemumgehung:
Anstatt den Index zu löschen, können Sie ihn deaktivieren und einen neuen Index mit derselben Definition erstellen:
- Erstellen Sie einen neuen Index mit derselben Indexdefinition wie die beschädigte
- Neuindizierung des Triggers auf dem neuen Index
- Deaktivieren Sie den beschädigten Index, indem Sie die Eigenschaft type in "disabled"ändern.
Sobald diese Änderungen vorgenommen wurden, wird jede Abfrage an den neuen Index gesendet
Löschen Sie die Daten aus der RDB:
Als letztes Mittel und wenn Sie auf RDBmk
, können Sie analysieren, um die Indexdaten direkt aus der Datenbank zu löschen, mit einer ähnlichen Abfrage wie:
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
Wenn Sie sich für diesen Pfad entscheiden, überprüfen Sie die Abfrage, bevor Sie sie ausführen, da möglicherweise einige Änderungen erforderlich sind
NOTE: AEM müssen heruntergefahren und lokale persistente Cache- und Indexdateien (<
crx-quickstart>
/repository/cache und <
crx-quickstart>
/repository/index) gelöscht, bevor AEM nach diesem Löschen gestartet wird.