Symptômes
Au démarrage, le référentiel CRX fonctionne comme prévu. Cependant aucune modification de contenu n’est indexée dans Lucene. Dans le journal des erreurs, les entrées sont enregistrées :
INFO [org.apache.jackrabbit.core.RepositoryImpl] (WorkspaceJanitor) disposing workspace 'myworkspace' which has been idle for 5064 ms INFO [org.apache.jackrabbit.core.RepositoryImpl] (WorkspaceJanitor) shutting down workspace 'myworkspace'... INFO [org.apache.jackrabbit.core.RepositoryImpl] (WorkspaceJanitor) workspace 'myworkspace' has been shutdown ERROR [org.apache.jackrabbit.core.RepositoryImpl] (ajp-10.2.0.101-12152-20) Unable to initialize workspace 'myworkspace'
Cause
Les conditions suivantes doivent être remplies pour susciter le problème :
- Le référentiel est configuré avec un maxIdleTime
- L'espace de travail en question n’est pas l’espace de travail par défaut
- L’initialisation de l'indexation prend plus de temps que maxIdleTime
- La version CRX est 1.4.x
Un espace de travail non par default est démarré lorsque l'accession a lieu la première fois (connexion à cet espace de travail). L’espace de travail par défaut est démarré au lancement du référentiel. Un espace de travail non par default peut être éliminé (arrêté) après un délai d’inactivité configurable (c’est-à-dire que ce n’est que les sessions système/interne sont consignées dans cet espace de travail). La valeur par défaut sous CRX est de 5 secondes.
Certains composants d’un espace de travail sont immédiatement initialisés au démarrage de l’espace de travail, alors que d’autres le sont à la demande. Le référentiel définit un indicateur sur l’instance d’espace de travail une fois que les composants initialisés immédiatement sont lancés. Le thread d’arrière-plan qui vérifie si un espace de travail peut être éliminé vérifie l’indicateur et le moment où l’espace de travail a été accédé. Au démarrage, cela peut devenir problématique, car l’index est initialisé laborieusement. Si le démarrage de l’index prend plus de temps que la valeur maxIdleTime, le thread de vérificateur d’arrière-plan suppose que l’espace de travail est inactif et le ferme vers le bas alors que l’indexation est toujours en cours de démarrage. Cette condition de concurrence a été corrigée dans CRX 2.0.
Résolution
Cela signifie que le problème est résolu dans CRX 2.0. La solution pour CRX 1.4.x est soit (1) définir le maxIdleTime dans repository.xml à 0 (remarque : la valeur par défaut dans CRX 1.4.2 est de 5 secondes) OU (2) définir le defaultWorkspace dans repository.xml'myworkspace '(remarque : la valeur par défaut est «CRX 1.4.2 crx.default»).
L’effet sera le même qu'un accès premier ou dernier : l’espace de travail myworkspace ne sera pas arrêté après quelques périodes d’inactivité.
Il n’existe qu’une différence : seul l’espace de travail par défaut est initialisé immédiatement au démarrage du référentiel. Les autres sont uniquement initialisés lors du premier accès (connexion à l’espace de travail). Cela signifie également qu’un index initial, ou une sous-rubrique, n’est déclenché que lors du premier accès à tous les espaces de travail par défaut.
L'index devra être régénéré pour corriger les nœuds non documentés pendant que vous rencontrez le problème. La méthode officiellement prise en charge et recommandée pour corriger l’index est la régénération.
S’applique à
CRX 1.4.x.
Accéder à votre compte