Risolvere i problemi di corruzione dei repository utilizzando la console CRX

Gli errori si verificano quando si esegue un controllo di coerenza e si corregge il PersistenceManager.

Quando esegui un controllo di coerenza e si corregge il PersistenceManager, ottieni uno o più dei seguenti errori nel log. (È probabile che gli uuid differiscano da questi errori.)

  • 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)

Oppure, quando stai reindicizzando l'indice di ricerca, con questo errore fallisce (con lo stesso uuid visualizzato):

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

Soluzione

Se il tuo problema corrisponde a quelli sopra elencati, allora il seguente processo ti aiuterà a risolvere la corruzione.

Fino a CRX 2.2 , utilizza la vecchia CRX Console:

  1. Arresta l'istanza CRX (la console CRX non funziona mentre CRX è in esecuzione)
  2. Potresti dover correggere lo script di avvio della Console. Per farlo, modifica server/console.sh e sostituisci la variabile REPOSITORY_HOME="$CONTEXT/crx" con REPOSITORY_HOME="$CONTEXT/../repository". (Considera che non puoi semplicemente aggiungere la riga all'inizio dello script, perché il CONTESTO potrebbe non essere impostato prima di quello facendo sì che la console utilizzi un repository diverso).
  3. Per CQ 5.3/CRX 2.x: copia server/lib/common/cq-shared-libs-5.3.4.jar in server/lib/container
  4. Per avviare la console CRX, in una finestra terminale, digita:
    crx-quickstart/server./console.sh
  5. Dopo che viene visualizzato il prompt della console, digita il seguente comando per accedere come amministratore:
    login crx.default admin <pwd>

Correggi "ChildNode has invalid parent id"

Dalla console CRX, segui questi passaggi:

  • Per esempio, se si è verificato questo errore:
    ChildNode has invalid parent id: INVALID_PARENT_UUID (instead of EXPECTED_PARENT_UUID)

    Esegui questo comando per ottenere una visualizzazione a basso livello del nodo madre "corretto":
    stat EXPECTED_PARENT_UUID

    Poi esegui una stat per ciascuno dei nodi figlio e verifica che il parentId sia EXPECTED_PARENT_UUID.
  • risolvi quelli che hanno l'id sbagliato usando il comando patch così:
    patch -p EXPECTED_PARENT_UUID CHILD_UUID

Come risolvere "NodeState references inexistent child"

Dalla console CRX, segui questi passaggi:

  1. Per esempio, se si è verificato questo errore:
    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. Esegui questo comando per ottenere il percorso della voce NodeState
    stat 4ee97820-2137-48e0-b664-f804c34eb24f
  3. Utilizza il percorso che ha prodotto dal comando di cui sopra come argomento [path] per questo comando:
    cd [path]
  4. Esegui questi comandi per rimuovere il riferimento al nodo figlio mancante, salva e esci:
    rm -c dd7e1f37-9480-4c40-af45-218db4c48190
    save
    exit
  5. Se puoi permetterti tempo di inattività, esegui un controllo completo della coerenza dell'indice di ricerca e correggi per rimuovere il nodo orfano dall'indice di ricerca. Vedi questo articolo per sapere come fare. In caso contrario, procedi con le seguenti operazioni.
  6. Assicurati che il CRX si sia fermato in quel punto. Crea un file chiamato redo_X.log in crx-quickstart/repository/workspaces//index/ <workspace> dove la X nel nome del file corrisponde a ciò che si trova alla fine del nome del file crx-quickstart/repository/workspaces/<workspace>/index/indexes_X. Nel file inserisci quanto segue:
    1 DEL dd7e1f37-9480-4c40-af45-218db4c48190
    1 COM
  7. Avvia CRX
  8. Se tutto è stato fatto correttamente allora dovresti vedere messaggi di log come questi nei tuoi logs/crx/error.log all'avvio di CRX:
    *INFO * Recovery: Found uncommitted redo log. Applying changes now... (Recovery.java, line 82)
    *INFO * Recovery: Redo changes applied. (Recovery.java, line 85)

Correggi "riferimento a uuid madre inesistente" e "ConsistencyCheck: Non riparabile: Nodo ... ha madre sconosciuta: ..."

Dalla console CRX, segui questi passaggi:

  1. Per esempio, se si è verificato questo errore:
    NodeState '80b19738-b62b-4a6a-af9b-70f245d2a7bc' references inexistent parent uuid '9b353130-29f4-4825-8c20-03f3a8786e5a'
  2. Esegui questi comandi per rimuovere il salvataggio del nodo figlio orfano e esci:
    rm [80b19738-b62b-4a6a-af9b-70f245d2a7bc]
    salva
    esci
  3. Se puoi permetterti tempo di inattività, esegui un controllo completo della coerenza dell'indice di ricerca e correggi per rimuovere il nodo orfano dall'indice di ricerca. Vedi questo articolo per vedere come fare. In caso contrario, procedi con le seguenti operazioni.
  4. Assicurati che il CRX si sia fermato in quel punto. Crea un file chiamato redo_X.log in crx-quickstart/repository/workspaces/<workspace>/index/ dove la X nel nome del file corrisponde a ciò che si trova alla fine del nome del file crx-quickstart/repository/workspaces/<workspace>/index/indexes_X. Nel file inserisci quanto segue:
    1 DEL 80b19738-b62b-4a6a-af9b-70f245d2a7bc
    1 COM
  5. Avvia CRX
  6. Se tutto è stato fatto correttamente allora dovresti vedere messaggi di log come questi nei tuoi logs/crx/error.log all'avvio di CRX:
    *INFO * Recovery: Found uncommitted redo log. Applica le modifiche adesso... (Recovery.java, line 82)
    *INFO * Recovery: Ripristina le modifiche applicate. (Recovery.java, line 85)

 

Nota: Se ci sono molti errori da correggere, puoi preparare più elementi in questi passaggi:

Nel passaggio 4, apri un file di testo e prepara più comandi rm quindi incolla l'intero contenuto del file nella console CRX, per esempio:
rm [<child uuid 1>]
rm [<child uuid 2>]
save
exit

Nel passaggio 6, ci sono più elementi nel redo_X.log inserisci come sotto:
1 DEL <child uuid 1>
1 DEL <child uuid 2>
1 COM

Sostituisci il <child uuid 1> con gli uuid effettivi del nodo figlio nel messaggio di errore, come nell'esempio riportato sopra, questo sarebbe 80b19738-b62b-4a6a-af9b-70f245d2a7bc

Correggi "javax.jcr.ItemNotFoundException: non è riuscito a costruire il percorso di ... non ha una voce figlio per ..."

Dalla console CRX, segui questi passaggi:

 

  1. Per esempio, se si è verificato questo errore:
    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. Esegui questi comandi per eliminare il nodo figlio orfano, salvare e uscire dalla console crx
    rm [46bbf932-3bd1-466d-bf93-7e0c99dc5707]
    save
    exit

  3. Se puoi permetterti tempo di inattività, esegui un controllo completo della coerenza dell'indice di ricerca e correggi per rimuovere il nodo orfano dall'indice di ricerca. Vedi questo articolo per sapere come fare. In caso contrario, procedi con le seguenti operazioni.
  4. Assicurati che CRX sia fermo in quel momento. Crea un file chiamato redo_X.log sotto crx-quickstart/repository/workspaces/<workspace>/index/ dove la X nel nome del file corrisponde a ciò che si trova alla fine del nome del file crx-quickstart/repository/workspaces/<workspace>/index/indexes_X. Nel file inserisci quanto segue:
    1 DEL 46bbf932-3bd1-466d-bf93-7e0c99dc5707
    1 COM
  5. Avvia CRX
  6. Se tutto è stato fatto correttamente allora dovresti vedere messaggi di log come questi nei tuoi logs/crx/error.log all'avvio di CRX:
    *INFO * Recovery: Found uncommitted redo log. Applica le modifiche ora... (Recovery.java, line 82)
    *INFO * Recovery: Ripristina le modifiche applicate. (Recovery.java, line 85)

Nota: Se ci sono molti errori da correggere, è possibile preparare più elementi in questi passaggi:

Nel passaggio 4, apri un file di testo e prepara più comandi rm quindi incolla l'intero contenuto del file nella console CRX, per esempio:
rm [<child uuid 1>]
rm [<child uuid 2>]
save
exit

Nel passaggio 6, ci sono più elementi nel redo_X.log inserisci come sotto:
1 DEL <child uuid 1>
1 DEL <child uuid 2>
1 COM

Sostituiresti il <child uuid 1> con gli uuidi effettivi del nodo figlio nel messaggio di errore, come nell'esempio riportato sopra, questo sarebbe 46bbf932-3bd1-466d-bf93-7e0c99dc5707

Come risolvere "NoSuchItemStateException: deadbeef-cafe-babe-cafe-babecafebabe"

Consulta questo articolo

Si applica a

CRX 1.4.x, CRX 2.x

Logo Adobe

Accedi al tuo account