Files
nas-runbooks/hermes-tt/n8n-cron-orphelin-hermes-mail-browser-instabilite.md

78 lines
4.4 KiB
Markdown

# Cron n8n orphelin (ingestion continue nyora-notes-tt) : boucle infinie sur folders error_409/404, cause reelle de la lenteur hermes-mail-browser
**Instance auteur** : hermes-tt
**Date** : 2026-08-02
**Tags** : n8n, hermes-mail-browser, nyora-notes-tt, cron, stabilite
**Statut** : valide
---
## Probleme
hermes-mail-browser semblait instable/lent (deja documente hier : 20/21 timeouts sur /search
profonds). Aujourd'hui, un test de telechargement de PJ a semble bloquer 3+ minutes sur un
simple /search. Diagnostic initial : suspicion de probleme structurel OWA/Playwright.
## Diagnostic reel
Les logs `docker logs hermes-mail-browser` montrent un appel `GET /search?q=*&folder_path=00
2026|Divers` **toutes les 10 minutes, exactement**, depuis le 31/07 (source IP 172.27.0.34 =
nyora-notes-tt). 292 occurrences. `n8n:search_executions` sur le workflow correspondant
(`Hovzm2wTOOJFxzpb`, "nyora-notes-tt -- Ingestion continue") confirme : 292 executions, toutes
marquees "success" (le noeud HTTP a `neverError:true`, donc un 409 ne fait pas echouer
l'execution n8n -- invisible dans le monitoring standard).
Le workflow : `Planification continue (10 min)` -> `GET /pending-folders?limit=1` ->
`POST /ingest` sur le dossier recupere. Conçu pour "s'arreter seul quand tout est done" --
mais les statuts `error_409` (5 dossiers, doublons ambigus) et `error_404` (dossiers vides
confirmes) sont des **etats finaux legitimes**, jamais retraitables avec succes. Le dossier
"00 2026|Divers" (error_409) revient donc systematiquement en tete de `/pending-folders`,
le workflow le re-ingere en boucle, obtient un 409, ne progresse jamais -- la condition
d'arret ("plus rien en pending/error") ne se declenche donc jamais non plus.
Consequence : contention reguliere (toutes les 10 min, ~10-90s par execution) sur la page
Playwright partagee de hermes-mail-browser, pour un travail strictement inutile.
## Ce qui n'etait PAS la cause (verifie, pour eviter de re-chasser cette piste)
| Hypothese | Verification | Resultat |
|-----------|--------------|----------|
| Fuite memoire Chromium / ressources hermes-mail-browser | `docker stats` | 1 Go RAM / 19 Go, CPU ~0%, uptime 8h -- sain |
| /search reellement bloque/casse | Test instrumente (`-u`, timing explicite) apres arret du cron | search ~35s, list_attachments ~10-15s/message -- conforme aux baselines deja documentees (mail-o365-search-pas-de-filtre-date.md) |
| Le "blocage" de 3 min pendant le test PJ | Logs serveur hermes-mail-browser au meme timestamp | La requete a bien progresse (200 OK x8), c'etait un faux positif cote client (stdout bufferise sur pipe ssh/docker exec sans `-u`, aucune visibilite temps reel) |
## Solution validee
```bash
# Identifier le workflow via n8n MCP : search_workflows puis get_workflow_details
# Desactiver :
n8n:unpublish_workflow(workflowId="Hovzm2wTOOJFxzpb")
```
Verification : plus aucune ligne `172.27.0.34` recurrente a intervalle de 10 min dans les
logs hermes-mail-browser apres desactivation.
## Piege generique a retenir
Toute boucle n8n avec condition d'arret "automatique" basee sur un etat DB (type
`/pending-folders` jusqu'a vide) doit garantir une VRAIE terminaison, pas juste supposer que
la source se tarira. Un statut d'erreur "final" (409 ambigu, 404 confirme vide) n'est pas
la meme chose qu'un statut "en attente de retry" -- si le endpoint source ne distingue pas
les deux, la boucle ne se videra jamais. Corollaire : `neverError:true` sur un noeud HTTP
masque ce genre de boucle inutile dans le monitoring n8n standard (toutes les executions
semblent "success") -- verifier le CONTENU des reponses, pas seulement le statut d'execution,
pour tout workflow recurrent cense s'auto-arreter.
Avant de blamer un service externe (ici hermes-mail-browser/OWA) pour de la lenteur ou de
l'instabilite persistante, verifier D'ABORD s'il existe un consommateur interne recurrent
(cron n8n, watchdog, boucle de retry) qui genere du bruit de fond -- `docker logs` filtre par
IP source est souvent le moyen le plus rapide de le confirmer ou de l'ecarter.
---
## References
- `hermes-tt/mail-o365-search-pas-de-filtre-date.md` (30/07/2026) -- baseline timing /search deja mesuree (~35-40s/appel)
- `hermes-tt/nyora-notes-tt-backup-wal-moteur-mixte.md` (02/08/2026) -- incident precedent du meme jour, meme famille de lecon (verifier le comportement reel avant de blamer l'infra sous-jacente)
- Workflow n8n `Hovzm2wTOOJFxzpb` (desactive, pas supprime -- conserve pour historique)