Environnement
Adobe Experience Manager
Problème
Comment réindexer correctement un index Oak synchrone sans provoquer de temps d’arrêt ?
Solution
Réindexation d’un index synchrone en définissant simplement la propriété reindex sur true entraîne une opération synchrone qui peut entraîner le blocage d’une instance Oak.
Pour éviter cette situation, envoyez l’indexation à un thread d’arrière-plan.
Pour ce faire, procédez comme suit :
Étape 1 : Réindexation dans un thread d’arrière-plan
Définissez les propriétés suivantes à partir de CRXDE Lite sur la définition d’index pour que l’index de propriété soit activé pour l’indexation asynchrone :
/oak:index/property index
reindex=true
reindex-async=true
Pour vérifier que l’action ci-dessus actualise le nœud, async="async-reindex"
doit être définie.
Appelez la propriété startPropertyIndexAsyncReindex
sur le MBean PropertyIndexAsyncReindex
.
Cette action lancera la tâche d’arrière-plan qui recherchera des types d’index de ce genre.
Après l’appel, une réindexation de ligne de journal s’effectuera…
Une fois la réindexation terminée, l’indicateur de réindexation est réinitialisé sur false.
Appelez à nouveau l’étape 3 pour rétablir l’index en index de synchronisation. Si l’indicateur asynchrone n’est pas supprimé, le MBean doit peut-être être appelé plusieurs fois (cela peut se produire si des modifications se produisent simultanément affectant cet index).
Remarque : seule la propriété async="async-reindex"
sera supprimée, car elle contrôle le thread sur lequel l’indexation se produira.
La propriété reindex-async
est simplement un indicateur de configuration qui ne change pas automatiquement.
L’idée est que vous la définissiez une fois pour les définitions d’index spécifiques ce qui contrôlera toute réindexation future.
On s’attend alors à ce qu’elle reste ainsi et que vous n’ayez plus à la toucher.
Étape 2 : Suppression du point de contrôle de réindexation (AEM 6.2 et versions antérieures uniquement).
Pendant le processus de réindexation asynchrone, un point de contrôle de référentiel est créé.
Une fois la tâche d’indexation terminée, elle doit être autorisée comme décrit ci-dessous, afin de garantir une récupération de l’espace mémoire de révision simple plus tard :
Tout d’abord, ouvrez le CheckpointManager MBean :
Sur MongoMK - /system/console/jmx/org.apache.jackrabbit.oak%3Aname%3DDocument+node+store+checkpoint+management%2Ctype%3DCheckpointManger
Appeler la variable listCheckpoints()
opération.
Recherchez la ligne du point de contrôle avec la propriété name=async-reindex
.
Copiez sa valeur d’identifiant dans le presse-papiers.:
Sur MongoMK, cela ressemblera à ceci : r1234567aaaa-0-1
Sur TarMK, cela ressemblera à ceci : 6eac07d0-fe27-4d16-82f8-6d5da4cefd67
Ouvrez ensuite l’opération releaseCheckpoint()
.
Collez l’id copié en tant que p1 et cliquez sur Appeler.
Cette étape autorisera le point de contrôle.