Sintomas
Na inicialização, o repositório CRX está funcionando conforme o esperado. No entanto, qualquer modificação de conteúdo não está sendo indexada no Lucene. No log de erros, as entradas são registradas:
INFORMAÇÃO [org.apache.jackrabbit.core.RepositoryImpl] (WorkspaceJanitor) área de trabalho de disposição 'myworkspace' que ficou inativa por 5064 ms INFO [org.apache.jackrabbit.core.RepositoryImpl] (WorkspaceJanitor) desligando a área de trabalho 'myworkspace'... INFO [org.apache.jackrabbit.core.RepositoryImpl] (WorkspaceJanitor) do espaço de trabalho 'myworkspace' foi encerrado ERRO [org.apache.jackrabbit.core.RepositoryImpl] (ajp-10.2.0.101-12152-20) Não é possível inicializar o espaço de trabalho 'myworkspace'
Causa
As seguintes condições devem ser atendidas para que o problema exista:
- O repositório está configurado com um maxIdleTime
- O espaço de trabalho em questão não é o espaço de trabalho padrão
- A inicialização do índice leva mais tempo que o maxIdleTime
- A versão do CRX é 1.4.x
O espaço de trabalho não padrão é iniciado quando acessado pela primeira vez (primeiro logon nesse espaço de trabalho). O espaço de trabalho padrão é iniciado no tempo de inicialização do repositório. O espaço de trabalho não padrão pode ser descartado (encerrado) após um tempo ocioso configurável (ou seja, apenas sessões do sistema / internas são registradas no espaço de trabalho). O valor padrão no CRX é de 5 segundos.
Alguns componentes de um espaço de trabalho são inicializados imediatamente na inicialização do espaço de trabalho, enquanto outros são inicializados por demanda. O repositório definirá um sinalizador na instância do espaço de trabalho depois que os componentes imediatamente inicializados forem iniciados. O encadeamento em segundo plano que verifica se um espaço de trabalho pode ser descartado verificará esse sinalizador e o horário em que o espaço de trabalho foi acessado pela última vez. Na inicialização, isso pode se tornar um problema, porque o índice é inicializado ociosamente. Se a inicialização do índice levar mais tempo que o maxIdleTime, o encadeamento do verificador de plano de fundo considerará que o espaço de trabalho está inativo e o desligará enquanto a indexação ainda estiver sendo iniciada. Esta condição de corrida foi corrigida no CRX 2.0.
Solução
Isso significa que o problema está corrigido no CRX 2.0. A solução alternativa para o CRX 1.4.x é (1) definir o maxIdleTime em repository.xml para 0 (OBSERVAÇÃO: o valor padrão no CRX 1.4.2 é 5 segundos) ou (2) definir defaultWorkspace em repository.xml como 'myworkspace'(OBSERVAÇÃO: o valor padrão no CRX 1.4.2 é' crx.default ').
O efeito será o mesmo se você fizer o primeiro ou o último: o espaço de trabalho do myworkspace não será encerrado após algum tempo ocioso.
No entanto, há uma diferença: somente o espaço de trabalho padrão é inicializado imediatamente na inicialização do repositório, todos os outros são inicializados apenas no primeiro acesso (primeiro logon no espaço de trabalho). Isso também significa que uma indexação inicial ou reindexação é acionada apenas no primeiro acesso para todos os espaços de trabalho não padrão.
O índice precisará ser reconstruído para corrigir qualquer nó não indexado enquanto você estava com o problema. A maneira oficialmente recomendada e compatível de corrigir o índice é reconstruí-lo.
Aplica-se a
CRX 1.4.x