Perché la modifica del contenuto non è indicizzata?

Sintomi

All'avvio, il repository CRX funziona come previsto. Tuttavia, qualsiasi modifica del contenuto non viene indicizzata all'interno di Lucene. Nel registro degli errori, le voci vengono registrate:

INFO [org.apache.jackrabbit.core.RepositoryImpl] (WorkspaceJanitor) che dispone dello spazio di lavoro 'myworkspace' che è stato inattivo per 5064 ms INFO [org.apache.jackrabbit.core.RepositoryImpl] (WorkspaceJanitor) che chiude lo spazio di lavoro 'myworkspace'... INFO [org.apache.jackrabbit.core.repositoryImpl] (WorkspaceJanitor) lo spazio di lavoro 'myworkspace' è stato chiuso ERROR [org.apache.jackrabbit.core.RepositoryImpl] (ajp-10.2.0.101-12152-20) Impossibile inizializzare lo spazio di lavoro 'myworkspace'

Causa

Affinché il problema sussista devono verificarsi le seguenti condizioni:

  1. Il repository è configurato con un maxIdleTime
  2. L'area di lavoro in questione non è l'area di lavoro predefinita
  3. L'inizializzazione dell'indice richiede più tempo di maxIdleTime
  4. La versione CRX è 1.4.x

L'area di lavoro Non-default viene avviata al primo accesso (primo accesso a quell'area di lavoro). L'area di lavoro predefinita viene avviata all'avvio del repository. Lo spazio di lavoro non predefinito può essere eliminato (shut down) dopo un tempo di inattività configurabile (cioè che solo le sessioni di sistema/interne sono registrate in quello spazio di lavoro). Il valore predefinito in CRX è 5 secondi.

Alcuni componenti di uno spazio di lavoro vengono inizializzati immediatamente all'avvio dello spazio di lavoro, mentre altri vengono inizializzati su richiesta. Il repository imposterà un flag sull'istanza dello spazio di lavoro una volta che i componenti immediatamente inizializzati sono stati avviati. Il thread di sfondo che controlla se un'area di lavoro può essere eliminata controllerà il flag e l'ora in cui è stato effettuato l'accesso all'area di lavoro per l'ultima volta. All'avvio, questo può diventare un problema, perché l'indice viene inizializzato pigramente. Se l'avvio dell'indice richiederà più tempo di maxIdleTime, allora il thread del controllore in background penserà che l'area di lavoro è inattiva e lo spegnerà mentre l'indicizzazione è ancora in fase di avvio. Questa condizione di gara è stata risolta in CRX 2.0.

Risoluzione

Questo significa che il problema è risolto in CRX 2.0. La soluzione per CRX 1.4.x è di (1) impostare maxIdleTime in repository.xml a 0 (NOTA: il valore predefinito in CRX 1.4.2 è 5 secondi) OPPURE (2) impostare defaultWorkspace in repository.xml a 'myworkspace' (NOTA: il valore predefinito in CRX 1.4.2 è 'crx.default').

L'effetto sarà lo stesso sia che tu faccia il primo o il secondo -- lo spazio di lavoro di myworkspace non si spegnerà dopo un certo tempo di inattività.

C'è una differenza -- solo lo spazio di lavoro predefinito è inizializzato immediatamente all'avvio del repository, tutti gli altri sono inizializzati solo al primo accesso (primo login allo spazio di lavoro). Questo significa anche che un indice iniziale o reindice viene attivato solo al primo accesso per tutti gli spazi di lavoro non di default.

L'indice dovrà essere ricostruito per correggere eventuali nodi non indicizzati mentre si verificava il problema. Il modo ufficialmente supportato e raccomandato per fissare l'indice è quello di ricostruirlo.

Si applica a

CRX 1.4.x

Logo Adobe

Accedi al tuo account