Relevé : un délai et un journal par étape, et /etat porte « motif » (à afficher par le front Svelte) #1625
Loading…
Reference in a new issue
No description provided.
Delete branch "hermes/releve-delai-etape"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Carte : t_990ea299 (Atelier Hermes). Le relevé du tableau 132 échouait en « code -1 ».
La panne, mesurée le 2026-10-14. Le bouton « Actualiser » affichait « Le relevé a échoué (code -1) : chiffres précédents conservés ». Lancé à la main sur le 132, le même relevé finit en code 0 mais en 366 s, dont 358 s sans une seule ligne ; le parent (
serveur.lancer_collecte), lui, le tue à 300 s et jetait la sortie d'erreur de l'enfant (elle n'était écrite qu'au retour normal). Vérifié sur l'ancien code, avec un enfant qui écrit deux lignes puis ne finit pas :Ses deux lignes sont perdues, donc aucune étape nommable : c'est ce qui donnait « code -1 » sans cause.
Cause. Le relevé n'avait aucun plafond de temps à lui. Une étape lente — service qui n'en finit pas, machine absente, reprises 401 qui s'additionnent — consommait à elle seule le délai du bouton, et tout le relevé était tué avec elle.
Remède. Le délai de 300 s ne bouge pas : c'est le relevé qui doit tenir dedans.
_tableau/etapes.py(nouveau)journal-collecte.log; délai par étape (SIGALRM, fil principal) ; budget du relevé entier à 270 s, dont 20 gardés pour l'écriture de la page ;etape_en_cours(), qui relit le journal_tableau/tableau-bord.py_tableau/collecte.pymotif_echecy déménage (plafond de lignes detableau-bord.py)_tableau/serveur.py_tableau/tableau.js_tableau/test_releve_delai.py(nouveau)Champ de l'API à faire suivre côté front (prévenir
svelte).GET /etatporte un champ ajouté :motif(texte,nullquand tout va bien)._tableau/tableau.jsl'affiche déjà ; le cadre Svelte (front/src/Cadre.svelte, ligne 153) affiche encore « Le relevé a échoué (code ${s.code}). » — une ligne à changer,s.motif || \code ${s.code}``. Je ne touche pas au front.Preuves.
Sur
origin/main(arbre de travail séparé,git worktree add --detach … origin/main) ce banc ne peut pas passer :etapes.pyn'existe pas et/etatne porte pasmotif. Il reproduit donc la panne avant le correctif.Couverture de ce qui est ajouté :
etapes.py100 %,test_releve_delai.py100 %.À déployer.
_tableau/etapes.py(nouveau),tableau-bord.py,collecte.py,serveur.py,tableau.js:_tableau/deploy-132.shles recopie (son filtre prend_tableau/*.py,*.js) et redémarrestudio-web. Aucune donnée, aucune unité systemd, rien à construire.Ce qui reste ouvert. Le relevé complet demande 366 s mesurées pour huit chaînes : le budget de 270 s abandonnera donc des chaînes tant que cette durée n'aura pas baissé (elles gardent leurs chiffres et le disent, sur leur carte). Le journal des étapes —
/opt/studio/journal-collecte.log, réécrit à chaque passage — donne désormais, par chaîne, sa durée et son temps d'attente : c'est la mesure qui manquait pour décider (piste : lire les huit chaînes ensemble plutôt que l'une après l'autre).Ce que je n'ai pas mesuré. La répartition des 358 s sur le 132 (pas d'accès à la machine ni aux jetons) ; la durée d'un relevé après le correctif.
72750e9a4fce9cd7b5d7ce9cd7b5d7d483e330b8d483e330b8dbb9ed94fefusion-auto: pas de fusion, la PR est en conflit avec main : à rebaser. Le chef de l'atelier renvoie la carte à l'agent ; l'étiquette tombera d'elle-même une fois corrigé.dbb9ed94fe46a1cc45fcfusion-auto: pas de fusion, la PR est en conflit avec main : à rebaser. Le chef de l'atelier renvoie la carte à l'agent ; l'étiquette tombera d'elle-même une fois corrigé.GET /api/releves, la fraîcheur de chaque relevé (t_6c90882a) #172846a1cc45fc1201136c581201136c58214e764d3bFusionnée automatiquement par
fusion-auto(forge) : CI verte, sans conflit.Rebasé sur
main(f79eca09) et poussé (214e764d). Un conflit :_tableau/LXC-132.md— les deux côtés ajoutaient une section en fin de fichier (la priorité du tableau côté main, le relevé des délais côté carte) : les deux apports sont gardés, aucun des deux n'est perdu.Mesures locales :
_tableau/front→ 43/43 fichiers de banc, 370 essais verts ;npx vite buildcode 0,dist/index.html1881 octets + 964K de JS. CI Forgejo : verte (run #597,214e764d).Un lien symbolique local
_tableau/front/node_moduless'était glissé dans un commit pendant la résolution ; il a été retiré de la branche (history réécrite).