Corrigir inconsistências no repositório quando SegmentNotFound é relatado no AEM 6.x
Se você tiver inconsistências no repositório (repositório) quando SegmentNotFound
for relatado, execute uma verificação de consistência no repositório, localize a última revisão válida (estado íntegro) e reverta para ele.
Descrição description
Ambiente
Adobe Experience Manager (AEM) 6.x
Problema/Sintomas
As exceções para SegmentNotFound
são observadas nos logs.
Exemplo:
-
*ERRO*
[
FelixStartLevel]
org.apache.sling.event[
org.apache.sling.event.impl.jobs.queues.QueueManager(1431)]
O método de ativação gerou uma exceção (org.apache.jackrabbit.oak.plugins.segment.SegmentNotFoundException: Segment da5bcb95-d00a-4c04-a9d9-0f10f2b14e5e não encontrado) -
**ERRO*
[
pool-6-thread-3]
org.apache.sling.commons.scheduler.impl.QuartzScheduler Exceção durante a execução do trabalho de org.apache.jackrabbit.oak.plugins.index.AsyncIndexUpdate@1dc173f9 : Segmento e669f30b-e886-4b7a-b161-56432601ec6b não encontradoorg.apache.jackrabbit.oak.plugins.segment.SegmentNotFoundException: Segmento e669f30b-e886-4b7a-b161-56432601ec6b não encontrado*
Resolução resolution
Execute uma verificação de consistência no repositório e localize a última revisão válida (estado íntegro) e reverta para ela.
Siga estas etapas:
-
Baixe uma versão do oak-run que corresponda à sua versão principal do oak emhttps://mvnrepository.com/artifact/org.apache.jackrabbit/oak-run
-
Para reverter um armazenamento de segmento corrompido para seu último bom estado, altere para o diretório de trabalho do CQ (aquele que contém a pasta crx-quickstartfolder) e faça backup de todos os arquivos no ./crx-quickstart/repository/segmentstore/.
-
Execute a verificação de consistência.
java -Xmx6000m -jar oak-run-*.jar check --bin=-1 /path/to/crx-quickstart/repository/segmentstore
Ela faz uma pesquisa retroativa nas revisões até encontrar uma consistente:
Procure uma mensagem como a abaixo:
[
main]
INFO o.a.j.o.p.s.f.t.ConsistencyChecker - Última revisão válida afdb922d-ba53-4a1b-aa1b-1cb044b535cf:234880 encontrada -
Reverta o repositório para esta revisão ao editar ./crx-quickstart/repository/segmentstore/journal.log e excluindo todas as linhas após a linha que contém a última revisão válida.
-
Remover tudo ./crx-quickstart/repository/segmentstore/*.bak arquivos.
-
Execute a limpeza de pontos de verificação para remover pontos de verificação órfãos:
java -Xmx6000m -jar oak-run-*.jar checkpoints /path/to/crx-quickstart/repository/segmentstore rm-unreferenced
-
Por fim, compacte o repositório:
java -Xmx6000m -jar oak-run-*.jar compact /path/to/crx-quickstart/repository/segmentstore/
Causa
Devido a alguns problemas mais antigos no Oak ou a algumas inconsistências no repositório, um segmento pode ficar ausente e o repositório pode estar inconsistente.