Ambiente
Adobe Experience Manager
Problema
Come posso reindicizzare correttamente un indice Oak sincrono senza causare tempi di inattività?
Soluzione
Reindicizzazione di un indice sincrono semplicemente impostando la proprietà reindicizzazione su true si traduce in un'operazione sincrona che può causare il blocco di un'istanza Oak.
Per evitare questa situazione, invia l'indicizzazione a un thread in background.
A tale scopo, segui la procedura indicata di seguito:
Passaggio 1: reindicizzare verso un thread in background
Imposta le seguenti proprietà da CRXDE Lite nella definizione dell'indice per l'indice delle proprietà da abilitare per l'indicizzazione asincrona:
/oak:index/property index
reindex=true
reindex-async=true
Per verificare l’aggiornamento del nodo, deve essere impostato async="async-reindex"
.
Richiama startPropertyIndexAsyncReindex
in un MBean PropertyIndexAsyncReindex
.
In questo modo si avvia il processo in background che cerca questi tipi di indici.
Dopo la chiamata dovresti vedere che verrà eseguita una reindicizzazione della riga del registro…
Una volta completata la reindicizzazione, il flag di reindicizzazione viene reimpostato su false.
Richiama nuovamente il passaggio 3 per ripristinare l’indice su un indice di sincronizzazione. Se il flag async non viene eliminato, allora potrebbe essere necessario richiamare Mbean più volte (Questo può accadere se ci sono modifiche che influiscono contemporaneamente su questo indice.)
Nota: questa operazione rimuove solo async="async-reindex"
, in quanto controlla il thread su cui avverrà l’indicizzazione.
La proprietà reindex-async
è solo un flag di configurazione che non si modifica automaticamente.
L’idea è di impostarla una volta per le specifiche definizioni degli indici che controllano tutte le reindicizzazioni future,
in modo che rimanga lì e non siano necessarie ulteriori operazioni.
Passaggio 2: rimuovere il punto di controllo della reindicizzazione (solo AEM 6.2 e versioni precedenti)
Durante il processo di reindicizzazione asincrona, viene creato un punto di controllo dell’archivio.
Dopo aver completato l’attività di indicizzazione è necessario rilasciarla come descritto di seguito, per garantire in futuro una corretta raccolta di oggetti inattivi di revisione:
Per prima cosa, apri le CheckpointManager MBean:
Richiama il listCheckpoints()
funzionamento.
Trova la riga del punto di controllo con la proprietà name=async-reindex
.
Copia il relativo valore ID negli Appunti:
Su MongoMK, avrà un aspetto simile al seguente: r1234567aaaa-0-1
Su TarMK, avrà un aspetto simile al seguente: 6eac07d0-fe27-4d16-82f8-6d5da4cefd67
Quindi apri l’operazione releaseCheckpoint()
.
Incolla l'ID copiato come p1 e fai clic su Richiama.
Questo passaggio rilascia il punto di controllo.