400 File exists writing SMstore file - throttling
Un examen du fichier /var/log/news/news.err m'apprit ceci :
innd: tradspool: could not open /var/spool/news/articles/fr/test/13048 File exists
innd: SERVER throttle File exists writing SMstore file -- throttling
Bref, j'etait pas plus avancé :-\
Le secret que je livre ici est jalousement gardé par une secte que j'ai rencontrée sur news:news.software.nntp ... On les appelle les newsmasters ;) et ca m'a prit 15 jours pour leur arracher l'info :D
Voici donc en excusivité et sans plus attendre la cause de la raison de la vengeance du probleme :
Si vous êtes la, vous savez ce qu'est INN, et comment ca marche (au moins
dans
les grandes lignes, comme moi quoi ;)
Donc vous savez qu'il existe plusieurs méthodes de stockage des groupes et
des
articles :
Tout ca est très mignon, mais ca nous dit pas pourquoi mon serveur marchait plus !
Patience, j'ai pas encore parlé des fichiers history...
inn gère un fichier localisé dans /var/lib/news/history
Ce fichier est en fait une série de lignes de texte, chaque ligne
représente un article avec diverses informations le concernant : le nom,
la date, le token
C'est ce fichier qui sert à gérer les expirations des articles.
(voir les pages
de manuel de history (5) pour des infos
complémentaires...)
On comprend donc bien que articles et fichiers history sont intimement liés : un fichier article est créé, il est aussitôt renseigné dans le fichier history.
Mais, dommage pour moi, mon serveur est victime d'une coupure d'electricité !
Comme j'ai du bol, ça se produit pil-poil alors que inn vient de créer un article, et le fichier history est pas encore mis à jour...
Au reboot du serveur, inn démarre, mais fichier history ne colle plus à la
réalité de mon spool de news.
Du coup INN retrouve plus ses petits, et se bloque avec son sordide message
d'erreur :(
La solution M$ (désolé, je suis
pas tout
à fait guéri) qui me vient vite à l'esprit (car quand
même, à ce moment précis
de l'histoire, je n'ai aucune idée
de ce qui se passe, est je nage dans mon caca)
est de désinstaller inn puis de le
réinstaller.
Cette solution est inenvisageable, car je tiens particulièrement à
mon
spool de news, car certains groupes sont présent sur mon disque depuis leur
création... Il est donc hors de question de perdre ces trésors de
l'humanité !
Au terme de ces épiques aventures, voilà ce que j'ai fait :
1-
Arrêter innd comme ceci :
# service innd stop
ou comme cela :
# /etc/init.d/innd stop
2-
Déplacer les fichiers /var/lib/news/history* quelque part
(/tmp par exemple)
3-
en tant que user news :
# makehistory -b -f history.new -O -l 30000 -I -e
Ca reconstruit le fichier history (man makehistory est une bonne idée avant
de lancer la commande ;)
# makedbz -s `wc -l < /var/lib/news/history.new` -f /var/lib/news/history.new
Reconstruit les fichiers BDD a partir de notre fichier history tout bô Voir man
makedbz...
4-
Si tout c'est bien passé on a dans /var/lib/news les fichiers suivants :
-rw-r--r-- 1 news news
2787916 Jun 28 08:01 history.new
On les renome en virant le .new :
-rw-r--r-- 1 news news
44 Jun 28 08:03 history.new.dir
-rw-r--r-- 1 news news
393216 Jun 28 07:45 history.new.hash
-rw-r--r-- 1 news news
262144 Jun 28 08:01 history.new.index
-rw-r--r-- 1 news news
2787916 Jun 28 08:01 history
-rw-r--r-- 1 news news
44 Jun 28 08:03 history.dir
-rw-r--r-- 1 news news
393216 Jun 28 07:45 history.hash
-rw-r--r-- 1 news news
262144 Jun 28 08:01 history.index
5-
en tant que user news :
# inndstart -m t -r
# ctlinnd go ""
# ctlinnd renumber ""
# ctlinnd shutdown ""
6-
Maintenant on peut relancer le service normalement :
Sur une Red Hat :
# service innd start
Sur une Debian :
# /etc/init.d/inn2 start
Sur une GameBoy :
[action] [haut] [droit] [bouton A] [bouton B] [bas]
7-
On se connecte avec son newsreader favori
: Ouf, ca marche !
Copyleft © 2001, 2002
RicoSpirit
|