Ambiente
Adobe Experience Manager
Problema
Como faço para reindexar corretamente um índice Oak síncrono sem causar tempo de inatividade?
Solução
Reindexação de um índice síncrono simplesmente definindo a propriedade reindex como true O resulta em uma operação síncrona que pode causar a interrupção de uma instância do Oak.
Para evitar essa situação, envie a indexação para um thread em segundo plano.
Para fazer isso, siga as etapas abaixo:
Etapa 1: reindexe em uma thread em segundo plano
Defina as seguintes propriedades de CRXDE Lite na definição de índice do índice de propriedade a ser ativado para indexação assíncrona:
/oak:index/property index
reindex=true
reindex-async=true
Para validar a atualização do nó, async="async-reindex"
deve ser definido.
Chame o startPropertyIndexAsyncReindex
no PropertyIndexAsyncReindex
MBean.
Isso iniciaria o trabalho em segundo plano que pesquisaria esses tipos de índices.
Após a invocação, você deverá ver uma reindexação de linha de log executada…
Quando a reindexação estiver concluída, o sinalizador de reindexação será redefinido para false.
Volte a invocar a etapa 3 para alterar o índice para um índice de sincronização. Se o sinalizador assíncrono não for excluído, o Mbean poderá ter que ser chamado várias vezes (isso pode acontecer se ocorrerem alterações afetando esse índice simultaneamente).
Observação: somente o async="async-reindex"
será removido, pois controla em qual thread a indexação ocorrerá.
A propriedade reindex-async
é apenas um sinalizador de configuração que não será alterado automaticamente.
A ideia é que você o defina uma vez para as definições de índice específicas que controlam todas as reindexações futuras.
Espera-se então que ele fique lá dentro e que você não precise tocá-lo novamente.
Etapa 2: remova o ponto de verificação de reindexação (somente AEM 6.2 e versões mais antigas)
Durante o processo de reindexação assíncrona, um ponto de verificação do repositório é criado.
Depois que a tarefa de indexação for concluída, ela deverá ser liberada conforme descrito abaixo, para garantir a coleção de lixo de revisão descomplicada mais adiante:
Primeiro, abra o CheckpointManager MBean:
Chame o listCheckpoints()
operação.
Encontre a linha de ponto de verificação com a propriedade name=async-reindex
.
Copiar seu valor de id para a área de transferência:
No MongoMK, será semelhante a isto: r1234567aaaa-0-1
No TarMK, será semelhante a isto: 6eac07d0-fe27-4d16-82f8-6d5da4cefd67
Em seguida, abra a operação releaseCheckpoint()
.
Cole a ID copiada como p1 e clique em Invocar.
Esta etapa liberará o ponto de verificação.