Correção de corrupções do repositório usando o console CRX

Ocorrem erros ao executar uma verificação consistente e corrigir seu PersistenceManager.

Ao executar uma verificação de consistência e correção em seu PersistenceManager, você recebe um ou mais dos seguintes erros no log. (É provável que seus uuids sejam diferentes desses erros.)

  • ChildNode has invalid parent id: 651da1a9-fdbb-49ca-b908-8939d0fb7976 (instead of d3fb8c83-5453-421b-a862-245a4b243af2)
  • NodeState 4ee97820-2137-48e0-b664-f804c34eb24f references inexistent child {}node3_etc_workflow_instances_2009-09-22_delete_asset_497741622317431 with id dd7e1f37-9480-4c40-af45-218db4c48190
  • NodeState '80b19738-b62b-4a6a-af9b-70f245d2a7bc' references inexistent parent uuid '9b353130-29f4-4825-8c20-03f3a8786e5a'
  • javax.jcr.ItemNotFoundException: failed to build path of 46bbf932-3bd1-466d-bf93-7e0c99dc5707: ad09118a-45cb-422d-b201-e0cbc938ade7 has no child entry for 46bbf932-3bd1-466d-bf93-7e0c99dc5707
  • ConsistencyCheck: Not repairable: Node 918fea28-f6ab-42bc-aff4-008d073632db has unknown parent: 42d4bb3e-2107-4560-ad54-f309b0db02dc (ConsistencyCheck.java, line 116)

Ou, quando você está reindexando o índice de pesquisa, ele falha com esse erro (com o mesmo uuid exibido):

NoSuchItemStateException: deadbeef-cafe-babe-cafe-babecafebabe.

Solução

Se seu problema corresponder a um dos listados acima, o processo a seguir ajudará a corrigir a corrupção.

Até o CRX 2.2, use o antigo console CRX:

  1. Interrompa a instância do CRX (o console CRX não funciona durante a execução do CRX)
  2. Pode ser necessário corrigir o script de inicialização para o console. Para fazer isso, edite server/console.sh, e substitua a variável REPOSITORY_HOME="$CONTEXT/crx" com REPOSITORY_HOME="$CONTEXT/../repository". (Por favor, observe que não é possível adicionar a linha na parte superior do script, porque o CONTEXTO pode não ser definido antes, o que faria com que o console usasse um repositório diferente).
  3. Para CQ 5.3/CRX 2.x: copie server/lib/common/cq-shared-libs-5.3.4.jar to server/lib/container
  4. Para iniciar o console do CRX, em uma janela do terminal, digite:
    crx-quickstart/server./console.sh
  5. Depois que o prompt do console for exibido, digite o seguinte comando para fazer logon como administrador:
    login crx.default admin <pwd>

Correção do erro "ChildNode has invalid parent id"

No console do CRX, siga estas etapas:

  • Por exemplo, se esse erro foi gerado:
    ChildNode has invalid parent id: INVALID_PARENT_UUID (instead of EXPECTED_PARENT_UUID)

    Execute este comando para obter uma visão de baixo nível do nó primário "correto":
    stat EXPECTED_PARENT_UUID

    Em seguida, execute uma estatística para cada um dos nós secundários e verifique se o parentId é EXPECTED_PARENT_UUID.
  • Corrija os que têm id incorreta usando o comando patch como este:
    patch -p EXPECTED_PARENT_UUID CHILD_UUID

Como corrigir o erro "NodeState references inexistent child"

No console do CRX, siga estas etapas:

  1. Por exemplo, se esse erro foi gerado:
    NodeState 4ee97820-2137-48e0-b664-f804c34eb24f references inexistent child {}node3_etc_workflow_instances_2009-09-22_delete_asset_497741622317431 with id dd7e1f37-9480-4c40-af45-218db4c48190
  2. Execute este comando para obter o caminho do item NodeState
    stat 4ee97820-2137-48e0-b664-f804c34eb24f
  3. Use o caminho resultante do comando acima como o argumento [caminho] para este comando:
    cd [path]
  4. Execute estes comandos para remover a referência do nó secundário ausente, salve e saia:
    rm -c dd7e1f37-9480-4c40-af45-218db4c48190
    save
    exit
  5. Se tempo de inatividade for possível, execute uma verificação de consistência de índice de pesquisa completa e corrija para remover o nó órfão do seu índice de pesquisa. Consulte este artigo para ver como isso é feito. Caso contrário, continue com as etapas a seguir.
  6. Certifique-se de que o CRX está interrompido nesse ponto. Crie um arquivo chamado redo_X.log em crx-quickstart/repository/workspaces/<workspace>/index/ onde o X no nome do arquivo corresponde ao que está no final do nome do arquivo para o arquivo crx-quickstart/repository/workspaces/<workspace>/index/indexes_X. No arquivo, digite o seguinte:
    1 DEL dd7e1f37-9480-4c40-af45-218db4c48190
    1 COM
  7. Iniciar CRX
  8. Se tudo tiver sido feito corretamente, você verá mensagens de log como estas em logs/crx/error.log na inicialização do CRX:
    *INFO * Recovery: Found uncommitted redo log. Applying changes now... (Recovery.java, line 82)
    *INFO * Recovery: Redo changes applied. (Recovery.java, line 85)

Corrigir "references inexistent parent uuid" e "ConsistencyCheck: Not repairable: Node ... has unknown parent: ..."

No console do CRX, siga estas etapas:

  1. Por exemplo, se você teve esse erro:
    NodeState '80b19738-b62b-4a6a-af9b-70f245d2a7bc' references inexistent parent uuid '9b353130-29f4-4825-8c20-03f3a8786e5a'
  2. Execute estes comandos para remover o salvamento do nó filho órfão e saia:
    rm [80b19738-b62b-4a6a-af9b-70f245d2a7bc]
    save
    exit
  3. Se tempo de inatividade for possível, execute uma verificação de consistência de índice de pesquisa completa e corrija para remover o nó órfão do seu índice de pesquisa. Veja este artigo sobre como isso é feito. Caso contrário, continue com as etapas a seguir.
  4. Certifique-se de que o CRX está interrompido nesse ponto. Crie um arquivo chamado redo_X.log em crx-quickstart/repository/workspaces/<workspace>/index/ onde o X no nome do arquivo corresponde ao que está no final do nome do arquivo para o crx-quickstart/repository/workspaces/<workspace>/index/indexes_X file. No arquivo, digite o seguinte:
    1 DEL 80b19738-b62b-4a6a-af9b-70f245d2a7bc
    1 COM
  5. Iniciar CRX
  6. Se tudo foi feito corretamente, então você deve ver mensagens de log como estas em seu logs/crx/error.log na inicialização do CRX:
    *INFO * Recovery: Found uncommitted redo log. Applying changes now... (Recovery.java, line 82)
    *INFO * Recovery: Redo changes applied. (Recovery.java, line 85)

 

Observação: Se você tiver muitos erros para corrigir, poderá preparar vários itens nas seguintes etapas:

Na etapa 4, abra um arquivo de texto e prepare vários comandos rm e cole todo o conteúdo do arquivo no console do CRX, por exemplo:
rm [<child uuid 1>]
rm [<child uuid 2>]
save
exit

Na etapa 6, você teria vários itens no redo_X.log como abaixo:
1 DEL <child uuid 1>
1 DEL <child uuid 2>
1 COM

Você substituiria o <child uuid 1> pelos uuids atuais do nó filho na mensagem de erro, como no exemplo dado acima, isso seria 80b19738-b62b-4a6a-af9b-70f245d2a7bc

Corrigir "javax.jcr.ItemNotFoundException: failed to build path of ... has no child entry for ..."

No console do CRX, siga estas etapas:

 

  1. Por exemplo, se você teve esse erro:
    javax.jcr.ItemNotFoundException: failed to build path of 46bbf932-3bd1-466d-bf93-7e0c99dc5707: ad09118a-45cb-422d-b201-e0cbc938ade7 has no child entry for 46bbf932-3bd1-466d-bf93-7e0c99dc5707
  2. Execute estes comandos para excluir o nó filho órfão, salve e saia do console CRX
    rm [46bbf932-3bd1-466d-bf93-7e0c99dc5707]
    save
    exit

  3. Se tempo de inatividade for possível, execute uma verificação de consistência de índice de pesquisa completa e corrija para remover o nó órfão do seu índice de pesquisa. Consulte este artigo sobre como isso é feito. Caso contrário, continue com as etapas a seguir.
  4. Certifique-se de que o CRX está parado nesse ponto. Crie um arquivo chamado redo_X.log em crx-quickstart/repository/workspaces/<workspace>/index/ onde o X no nome do arquivo corresponde ao que está no final do nome do arquivo para o arquivo crx-quickstart/repository/workspaces/<workspace>/index/indexes_X. No arquivo, digite o seguinte:
    1 DEL 46bbf932-3bd1-466d-bf93-7e0c99dc5707
    1 COM
  5. Iniciar CRX
  6. Se tudo foi feito corretamente, então você deve ver mensagens de log como estas em seu logs/crx/error.log na inicialização do CRX:
    *INFO * Recovery: Found uncommitted redo log. Applying changes now... (Recovery.java, line 82)
    *INFO * Recovery: Redo changes applied. (Recovery.java, line 85)

Observação: Se você tiver muitos erros para corrigir, poderá preparar vários itens nas seguintes etapas:

Na etapa 4, abra um arquivo de texto e prepare vários comandos rm e cole todo o conteúdo do arquivo no console do CRX, por exemplo:
rm [<child uuid 1>]
rm [<child uuid 2>]
save
exit

Na etapa 6, você teria vários itens no redo_X.log como abaixo:
1 DEL <child uuid 1>
1 DEL <child uuid 2>
1 COM

Você substituiria o <child uuid 1> pelos uuids atuais do nó filho na mensagem de erro, como no exemplo dado acima, isso seria 46bbf932-3bd1-466d-bf93-7e0c99dc5707

Como corrigir "NoSuchItemStateException: deadbeef-cafe-babe-cafe-babecafebabe"

Consulte este artigo

Aplica-se a

CRX 1.4.x, CRX 2.x

 Adobe

Receba ajuda com mais rapidez e facilidade

Novo usuário?