Parameter
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:
|
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. |
forceConsistencyCheck |
falso |
Executa 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. |
autoRepair |
verdadeiro |
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