Correção e solução alternativa de corrupção de índice com o AEM/AEM Forms

Se alguém tiver o problema de corrupção de índice nos formulários do AEM/AEM, este artigo ajudará a resolver o problema, mostrando como excluir os dados de índice contidos no repositório e reindexar o índice corrompido.

Descrição description

Ambiente

Experience Manager Forms

Problema/Sintomas

Experimentar uma corrupção de índice é um caso muito incomum. Mas, se isso acontecer, será possível ver entradas de log semelhantes a:
17.01.2019 17:55:47.374 *WARN* [ pool-118-thread-4] org.apache.jackrabbit.oak.plugins.index.AsyncIndexUpdate [ async] The index update failedorg.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)

Resolução resolution

Se alguém enfrentar essa situação, provavelmente a maneira mais rápida de resolver esse problema é excluindo os dados de índice contidos no repositório e reindexando o índice corrompido.

OBSERVAÇÃO: a reindexação é uma ação que consome tempo e recursos para esses exemplos, e usaremos o índice "workflowDataLucene"

Excluir os dados do índice:

Os dados de índice estão localizados no repositório abaixo de /oak:index/workflowDataLucene como nós ocultos. Portanto, para excluir o índice corrompido, é necessário:

  1. Copie a definição do índice (somente) para um novo local.
  2. Excluir toda a estrutura do nó /oak:index/workflowDataLucene.
  3. Recrie /oak:index/workflowDataLucene e acione a reindexação.

Solução alternativa:

Como solução, em vez de excluir o índice, você pode desativá-lo e criar um novo índice com a mesma definição:

  1. Criar um novo índice com a mesma definição do índice corrompido
  2. Acionar reindexação no novo índice
  3. Desative o índice corrompido alterando a propriedade de tipo para “desativado”

depois que essas alterações forem feitas, cada consulta passará para o novo índice

Excluir os dados do RDB:

Como último recurso, e se você executar em RDBmk, poderá analisar para excluir os dados do índice diretamente do banco de dados com uma consulta do tipo:

DELETE FROM NODESWHERE
ID ='2:/oak:index/workflowDataLucene' ORIDLIKE '3:/oak:index/workflowDataLucene/%' ORIDLIKE '4:/oak:index/workflowDataLucene/%' ORIDLIKE '5:/oak:index/workflowDataLucene/%' ORIDLIKE '6:/oak:index/workflowDataLucene/%' ORIDLIKE '7:/oak:index/workflowDataLucene/%' ORIDLIKE '8:/oak:index/workflowDataLucene/%' ORIDLIKE '9:/oak:index/workflowDataLucene/%' ORIDLIKE '10:/oak:index/workflowDataLucene/%' OR 
IDLIKE '5:p/oak:index/workflowDataLucene/%' ORIDLIKE '6:p/oak:index/workflowDataLucene/%' ORIDLIKE '7:p/oak:index/workflowDataLucene/%' ORIDLIKE '8:p/oak:index/workflowDataLucene/%' ORIDLIKE '9:p/oak:index/workflowDataLucene/%' ORIDLIKE '10:p/oak:index/workflowDataLucene/%' ORIDLIKE '11:p/oak:index/workflowDataLucene/%' ORIDLIKE '12:p/oak:index/workflowDataLucene/%' OR


Se decidir seguir esse caminho, verifique a consulta antes de executá-la, pois ela pode exigir algumas alterações

OBSERVAÇÃO: o AEM deve ser desligado e os arquivos de índice e cache persistentes locais (< crx-quickstart> /repository/cache e < crx-quickstart> /repository/index) devem ser excluídos antes de o AEM ser iniciado após a exclusão.

recommendation-more-help
experience-cloud-kcs-help-kbarticles