Pergunta / Problema

Às vezes, pode acontecer que o índice Lucene de um repositório entre em um estado inconsistente, principlamente se o repositório for desligado de forma anormal ou o processo Java correspondente for interrompido inesperadamente. Dependendo da gravidade de uma inconsistência de índice, o repositório poderá não conseguir mais iniciar corretamente.

Resposta / Resolução

A classe LuceneHandler do CRX está estendendo a classe SearchIndex [1] do Jackrabbit, que fornece os seguintes parâmetros de configuração para verificar e reparar inconsistências de índice:

Parameter Default Value Description
enableConsistencyCheck false Se estiver configurado para verdadeiro, a verificação de consistência será desempenhada dependendo do parâmetro forceConsistencyCheck. Se configurado como falso, nenhuma verificação de consistência será executada na inicialização.
forceConsistencyCheckfalsoExecuta uma verificação de consistência em todas as inicializações. Se for falso, uma verificação de consistência será executada apenas quando o índice de pesquisa detectar um desligamento forçado anterior.
autoRepairverdadeiro Erros detectados por uma verificação de consistência são automaticamente reparados. Se for falso, os erros serão gravados apenas no log.

Para disparar uma verificação de consistência de índice, basta reconfigurar o arquivo de configuração workspace.xml correspondente do espaço de trabalho em questão, por exemplo <crx_home>/crx-quickstart/repository/workspaces/crx.default/workspace.xml:

workspace.xml

<SearchIndex class="com.day.crx.query.lucene.LuceneHandler">
    ...
    <param name="enableConsistencyCheck" value="true" />
    <param name="forceConsistencyCheck" value="true" />
    <param name="autoRepair" value="true" />
</SearchIndex>

Uma vez que esta configuração esteja em vigor, uma verificação de consistência do índice será executada na inicialização, o que, dependendo do volume do repositório e do tamanho do índice, poderá levar algum tempo para ser concluído. No error.log do CRX, o progresso da verificação poderá ser monitorado:

*INFO * SearchIndex: Running consistency check...
*INFO * ConsistencyCheck: progress: 10%
*INFO * ConsistencyCheck: progress: 20%
...

Lembre-se de remover novamente a configuração acima, caso contrário, a verificação de consistência será disparada em cada reinicialização do repositório, o que retarda o tempo de inicialização. A definição do valor de enableConsistencyCheck como falso também desativa a verificação.

Recrie completamente o índice

Para recriar completamente o índice, pare o repositório, exclua os diretórios de índice e inicie o repositório. A recriação do índice poderá demorar algumas horas. Os diretórios de índice são armazenados separadamente para cada nó do cluster, nos seguintes diretórios:

  • crx-quickstart/repository/repository/index
  • crx-quickstart/repository/workspaces/crx.default/index
  • crx-quickstart/repository/workspaces/crx.system/index

Aplica-se

CRX >= 1.4.x

Esta obra está licenciada sob uma licença não adaptada da Creative Commons Attribution-Noncommercial-Share Alike 3.0  As publicações do Twitter™ e do Facebook não são cobertas pelos termos do Creative Commons.

Avisos legais   |   Política de privacidade online