A limpeza de revisão offline interrompe o repositório em caso de haver pouco espaço disponível em disco

Problema

Depois de executar a Limpeza de Revisão Off-line (também conhecida como Compactação de Tar Offline) no AEM 6.3, a seguinte exceção poderá ser encontrada no error.log:

05.10.2017 16:45:20.437 * ERROR * [FelixStartLevel] org.apache.jackrabbit.oak-segmento-tar [org.apache.jackrabbit.oak.segment.SegmentNodeStoreService (208)] O método activate lançou uma exceção (java.lang.IllegalStateException: Este bulider não existe: null) java.lang.IllegalStateException: Este builder não existe: null

A instância não inicia neste ponto e a execução de uma verificação de repositório (ferramenta de "verificação oak-run") não poderá detectar essa corrupção. O reparo não é possível, pois os dados foram excluídos pela limpeza de revisão offline com falha.

Se você tiver com "log ativado" durante a limpeza da revisão offline, atente para a mensagem:

10:43:19.886 WARN [TarMK disk space check [/crx-quickstart/repository/segmentstore]] FileStore.java:701 Available disk space (14.6 GB) is too low, current repository size is approx. 59.4 GB

Se esta mensagem for posteriormente seguida pela mensagem:

10:43:19.889 INFO [main] LoggingGCMonitor.java:45 TarMK GC #0: compaction succeeded in 2.034 min (122066 ms), after 0 cycles.

Isso significa que o erro ocorreu, o repositório foi corrompido e precisa ser restaurado a partir de um back-up.

Se a mensagem, em vez disso, conter:

11:01:27.312 WARN  [main] LoggingGCMonitor.java:50          TarMK GC #0: compaction cancelled: Not enough disk space.

isso significa que o erro não ocorreu e não há corrupção do repositório. (A limpeza de revisão offline não foi concluída com êxito, pois não havia espaço suficiente em disco).

Ambiente

AEM 6.3 com Oak 1.6 (e versão correspondente do oak-run).

Versões afetadas

Oak 1.6.0, Oak 1.6.1, Oak 1.6.2, Oak 1.6.3, Oak 1.6.4, Oak 1.6.5, Oak 1.6.6, Oak 1.6.7

Não afetados

Oak 1.0.x, Oak 1.2.x, Oak 1.4.x, Oak 1.7.x, Oak 1.8.x e posteriores. A limpeza da revisão online não está afetada.

Causa

A limpeza de revisão offline monitora o espaço em disco disponível durante sua execução.  Ela é cancelada quando não há espaço suficiente disponível em disco.  Uma condição de erro não é tratada corretamente por este processo, causando uma corrupção de repositório irrecuperável e potencialmente grave.

Isso é rastreado no OAK-7050:

A Limpeza de Revisão Offline poderá corromper o repositório em alguns casos: quando a Limpeza de Revisão Offline é cancelada pelo CancelCompactionSupplier, o valor de retorno correspondente não é passado corretamente pela cadeia de chamadas, resultando em um estado de cabeçalho compactado incompleto definido como o estado de cabeçalho compactado ( em vez de ser descartado).

O cancelamento é silenciosamente disparado quando o espaço em disco disponível é menor que 25% do tamanho real do repositório.

Resolução

Como forma de mitigação, certifique-se de que haja espaço em disco suficiente disponível durante todo o tempo de execução da limpeza de revisão offline com uma versão do Oak afetada por esse problema.

Antes de iniciar a compactação, deverá haver espaço livre suficiente para armazenar o dobro do tamanho do repositório atual.  Em todos os momentos, ao executar a compactação, o espaço restante no disco não deverá cair abaixo de 25% do tamanho atual do repositório.

Na documentação oficial, você poderá encontrar estas diretrizes:


Quais são os requisitos mínimos para espaço em disco e memória heap ao executar a Limpeza de Revisão Online?

O espaço em disco é continuamente monitorado durante a Limpeza de Revisão Online. Se o espaço em disco disponível cair abaixo de um valor crítico, o processo será cancelado. O valor crítico é 25% do espaço ocupado pelo disco atual do repositório e não é configurável.

Recomenda-se dimensionar o disco pelo menos duas ou três vezes maior que o tamanho do repositório incluindo o crescimento estimado.


O OAK-7050 está corrigido na versão oak-run 1.6.8 que tem o lançamento estimado para 8 de janeiro de 2018.  Esta versão do oak-run deverá ser usada no AEM 6.3 para executar a Limpeza de Revisão Offline.

Se você tiver a necessidade de executar a Limpeza de Revisão Offline antes do lançamento do Oak 1.6.8 e não possa garantir que haja espaço disponível em disco duas vezes maior que o tamanho do repositório, um build preliminar poderá ser baixado a partir daqui.

Não há necessidade de atualizar nada no lado do AEM, apenas a ferramenta externa oak-run é afetada.

Observação:

Como forte recomendação, sempre use a versão do oak-run que corresponda à versão do Oak na respectiva instância do AEM.

Para lidar com esse problema, recomendamos:

  1. Atualizar todas as instâncias para o Oak 1.6.8 assim que o HF correspondente for lançado e a partir daí continue usando a versão correspondente do oak-run.
  2. Até que a atualização para o Oak 1.6.8 seja concluída, use o oak-run 1.6.8 (ou oak-run-1.6.7-R1817912.jar do link acima até que o 1.6.8 seja lançado) para compactação offline e use a versão correspondente do oak-run para todos os outros comandos.
Logotipo da Adobe

Fazer logon em sua conta