En vue de fournir à ses utilisateurs une recherche rapide et pertinente, JIRA maintient un index Lucene de tout texte entré dans les différents champs d'un ticket. Cet index est normalement mis à jour à chaque fois qu'un nouveau champ est renseigné ou mis à jour. Mais il arrive qu'il faille régénérer l'index manuellement. Par exemple lorsqu'il est corrompu, ou lorsque la configuration d'un champ personnalisé est mise à jour.
Il existe deux types de réindexation :
- L'une se fait en arrière-plan, mais elle peut être relativement longue à s'achever ; toutefois, les utilisateurs peuvent continuer à utiliser JIRA normalement pendant que s'effectue la réindexation.
- La seconde réindexation s'effectue en avant-plan et, contrairement à la précédente, a pour caractéristique de provoquer une interruption de service, bloquant tout accès à JIRA jusqu'à ce que la réindexation s'achève. En outre les index relatifs aux commentaires et à l'historique des changements ne peuvent être reconstruits que par cette voie.
Pour minorer ces inconvénients, il est intéressant de procéder à la réindexation en « heures creuses » (heures non ouvrées ou de faible activité). Mais comme la réindexation ne peut être programmée, cela impliquait -- du moins avant JIRA 6.1 -- que l'administrateur JIRA fût devant sa machine.
Or Atlassian, étendant sans cesse son API REST pour JIRA, a ajouté avec la livraison 6.1 (sortie en septembre 2013) une nouvelle ressource permettant de déclencher une réindexation par un simple appel HTTP POST. Cette ressource permet désormais -- pourvu que l'on dispose des droits ad hoc -- de déclencher à distance et programmatiquement une réindexation. Avec cURL, par exemple, comme l'illustre le script reindex.sh suivant :
Quant au fichier de configuration (reindex.ini), il a simplement besoin d'être ainsi constitué :
; URL de JIRA. La partie gauche est l'argument passé après -i, en ligne de commande
jira=http://localhost:8080/jira
; Nom d'un utilisateur avec des droits d'administration
username=username
; Le mot de passe correspondant
password=password
Et il n'y a plus qu'à l'appeler :
$ sh reindex.sh -i jira -t bg