1 (edited by Gemini 02-04-2010 23:51:06)

Topic: [Résolu] Mise à jour ejabberd : cata ! Roster perdus :/

Bonsoir !

Ce soir j'ai franchi le pas : j'ai mis à jour mon serveur, de la Mandriva 2009.1 vers la 2010.0. Tout s'est bien déroulé sauf pour … ejabberd hmm

En effet, une fois démarré correctement ( les scripts mandriva sont toujours aussi foireux mais ce n'est pas plus gênant que ça, j'arrive toujours à m'en tirer), je me connecte avec mon utilisateur et là, c'est le drame : ma liste de contact est vide.

Je n'ai pas vu de message ressemblant sur le fofo officiel, aussi je m'en remets à vous pour savoir un peu mieux où chercher.

Vous avez déjà eu ce problème ? J'ai des sauvegardes régulières effectuées sur un NAS, j'ai tout ce qu'il faut sous la main.

Également, j'ai un peu fouillé dans /var/lib/ejabberd/ et j'ai trouvé trois fichiers nommés roster.DCD. Je ne sais pas lequel est utilisé ni à quoi servent les deux autres. J'ai :

— /var/lib/ejabberd/roster.DCD
— /var/lib/ejabberd/roster.DCL

— /var/lib/ejabberd/spool/roster.DCD
— /var/lib/ejabberd/spool/roster.DCL

— /var/lib/ejabberd/db/ejabberd/roster.DCD
— /var/lib/ejabberd/db/ejabberd/roster.DCL

Re: [Résolu] Mise à jour ejabberd : cata ! Roster perdus :/

Je suppose que tu es passé d'une version 2.0.x à une version 2.1.x, il y'a eu un changement dans l'emplacement des fichiers contenant les infos des rosters et des comptes (cf http://www.process-one.net/en/ejabberd/ … erd_2.1.0). Avant c'était dans /var/lib/ejabberd/db/NODENAME/* (NODENAME doit valoir ejabberd chez toi), et maintenant c'est dans /var/lib/ejabberd. Donc je pense qu'en recopiant les fichiersde /var/lib/ejabberd/db/ejabberd/ vers /var/lib/ejabberd/ tu devrais retrouver ton roster.

Par contre je n'ai aucune idée de à quoi sert le répertoire /var/lib/ejabberd/spool

Re: [Résolu] Mise à jour ejabberd : cata ! Roster perdus :/

Mhh, si tu as des bugs sur ejabberd et les scripts d'init, je suis intéressé par un rapport de bug pour savoir ce qu'il y a à corriger.

4 (edited by Gemini 02-04-2010 23:35:20)

Re: [Résolu] Mise à jour ejabberd : cata ! Roster perdus :/

Merci Omega ! Je vais de ce pas mettre en œuvre ta proposition.

Misc, par quel moyen le souhaiterais-tu ? Par ce forum ? Par échange de courrier électronique ? Par un bugzilla ? ( celui de Mandriva ?)

Un exemple sur lequel je viens de tomber : je voulais arrêter le serveur le temps de mettre en œuvre la suggestion d'Omega. Le script n'a pas réussi à arrêter le serveur. Je vais devoir le tuer à la main :

# service ejabberd stop
Arrêt de ejabberd : Failed RPC connection to the node ejabberd@localhost: nodedown

Commands to start an ejabberd node:
  start  Start an ejabberd node in server mode
  debug  Attach an interactive Erlang shell to a running ejabberd node
  live   Start an ejabberd node in live (interactive) mode

Optional parameters when starting an ejabberd node:
  --config-dir dir   Config ejabberd:    /etc/ejabberd
  --config file      Config ejabberd:    /etc/ejabberd/ejabberd.cfg
  --ctl-config file  Config ejabberdctl: /etc/ejabberd/ejabberdctl.cfg
  --logs dir         Directory for logs: /var/log/ejabberd
  --spool dir        Database spool dir: /var/lib/ejabberd
  --node nodename    ejabberd node name: ejabberd@localhost


# ps -eaf | grep jabbe
root      4191     1  0 Apr01 ?        00:00:25 /usr/lib/erlang/erts-5.7.2/bin/beam -K true -P 250000 -- -root /usr/lib/erlang -progname erl -- -home /var/lib/ejabberd/spool -sname ejabberd@localhost -noshell -noinput -noshell -noinput -pa /usr/lib/ejabberd/ebin -mnesia dir "/var/lib/ejabberd/spool" -s ejabberd -sasl sasl_error_logger {file,"/var/log/ejabberd/erlang.log"} -smp auto start

À ce propos, je viens de remarquer qu'il semblerait que dans le script de la Mandriva, la base de données soit dans /var/lib/ejabberd/spool.

Pourrais-tu confirmer Misc ? Dans ce cas, également, pourrais-tu me dire si ce répertoire à été modifié entre la Mandriva 2009.1 et la 2010.0 ?

Si c'est le cas, il faudrait alors rajouter au rapport de bug le fait que la mise à jour ne migre pas les bases vers le nouvel emplacement.

Enfin, j'ajouterai qu'il m'est arrivé, notamment au début de mes déboires avec les scripts, de lancer ejabberd à la main. Ceci expliquerai alors une telle diversité d'emplacements de bases Mnesia.

EDIT : OK je pense que j'ai compris. Merci à Omega de m'avoir mis sur la bonne piste. En examinant de plus près les dates de modifications des différents fichier, et avec les éléments apportés par Omega, j'en déduis que :

— /var/lib/ejabberd/db/ejabberd/ contient les fichiers crées lorsque j'ai lancé manuellement ejabberd, mais n'ont en fait jamais servis depuis ;
— /var/lib/ejabberd/ contient les fichiers utilisés par ejabberd lorsque lancé par les scripts Mandriva de la 2009.1. Les données que je recherche sont ici (un examen avec Vi le confirme) ;
— /var/lib/ejabberd/spool/ contient les fichiers utilisés par ejabberd lorsque lancé par les scripts de la Mandriva 2010.0.

On peu donc supposer que lors de la mise à jour, le chemin a été changé, mais les données existantes n'ont pas été déplacées.

J'ai bon ? smile

Re: [Résolu] Mise à jour ejabberd : cata ! Roster perdus :/

Effectivement, après avoir déplacé roster.DCD vers spool/roster.DCD, tout est rentré dans l'ordre. Merci à Omega !!

Il ne me reste donc plus qu'à voir avec misc pour améliorer les scripts wink

Re: [Résolu] Mise à jour ejabberd : cata ! Roster perdus :/

Par bugzilla. Je garanti pas que je vais regarder tout de suite, mais ça aiderais à garder une trace. Et ton analyse me semble correct.