[136] Planifier la transformation vers la zone argent #143
Labels
No labels
Compat/Breaking
EC01
EC02
EC03
EC04
EC05
EC06
Kind/BDD
Kind/Back
Kind/Bug
Kind/CICD
Kind/Cloud
Kind/Contenu
Kind/Data
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Front
Kind/IA
Kind/Infra
Kind/Monitoring
Kind/Security
Kind/Testing
Portée/Post-jury
Priority
Critical
Priority
High
Priority
Low
Priority
Medium
Reviewed
Confirmed
Reviewed
Duplicate
Reviewed
Invalid
Reviewed
Won't Fix
Status
Abandoned
Status
Blocked
Status
Need More Info
ops/alerte
No milestone
No project
No assignees
3 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
g2/enervision!143
Loading…
Reference in a new issue
No description provided.
Delete branch "lenaic/136-planifier-silver"
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?
Ferme #136. À fusionner après la #142, dont l'entrée de crontab suppose la
correction de la grille.
Le constat
Le seau
silverest à 0 objet alors que le code du #34 est fusionné etdéployé, et que bronze en contient 9090. Le job n'est appelé par rien.
Vérifié sur le serveur : crontabs de
root,deployetlenaic,/etc/crontab,/etc/cron.d,/etc/cron.hourly,/etc/cron.daily, minuteriessystemd et unités nommées. Seules les deux lignes du collecteur existent.
Et une ligne posée en l'état aurait échoué à chaque passage, pour deux
raisons qui ne se voient pas en lisant la liste des tâches.
1. Le lanceur ignorait le python du venv
silver-daily.shfaisaitexec python3, là où les lanceurs du collecteur fontexec "${ENERVISION_PYTHON:-python3}". Sur le serveur :C'est le mode de panne relevé en relecture de la #114 pour le collecteur,
reproduit à l'identique dans l'ETL.
Le lanceur vérifie maintenant ses dépendances avant de partir et sort en 3 avec
un message qui nomme la cause. Les deux dépendances sont nommées explicitement
plutôt que remplacées par un
import etl.silver.jobplus général, et c'estdélibéré :
entrepot.pyimporte minio et duckdb tardivement, pour que les testsunitaires tournent sans le SDK. Importer le module réussit donc sans eux. J'ai
écrit la version générale d'abord, et le banc local l'a montrée inopérante,
retombant sur la trace brute avec le code 1.
2. Le rôle supposait le service
La tâche de
statcomme la ligne de crontab construisaient le chemin avecservices/collector/bin/en dur. Juste tant qu'il n'y avait que des collecteurs,faux dès que l'ETL doit être planifié : son lanceur vit dans
services/etl/bin.Le chemin vient désormais du champ
servicede la tâche, etcollector_tachesdevient
taches_planifiees: la liste ne décrit plus le seul collecteur.3. L'entrée silver
Minute 0 de chaque heure, sur la journée courante, journal dans
/var/log/enervision/silver.log, déjà couvert par la rotation*.logen place.Le rôle ne pose la ligne que si le lanceur existe dans le dépôt.
Éprouvé en local, pas seulement lu
Le banc du rôle gagne un contrôle sur ce chemin, vert sur le rôle corrigé,
rouge sur le chemin en dur réintroduit :
Aucun linter ne voit un chemin littéral qui se trouve être le bon pour deux
entrées sur trois, et c'est exactement ce que ce banc existe pour attraper.
yamllintpropre,ansible-lintà 0 défaut en profil production,site.yml --syntax-checkpassant,ansible-playbook tests/ci/test-role-app.ymlà
ok=10 failed=0. Le préflight du lanceur éprouvé dans les deux sens, code 3sans les dépendances et silencieux avec.
Le manuel
docs/runbooks/etl.mddit comment vérifier que ça tourne, comment lire unrefus du garde-fou sans le confondre avec une panne, comment rejouer une
journée et comment éprouver une règle sans toucher à la production. C'est la
confusion qui nous a coûté du temps ce matin.
Risque
Faible. Le pire cas est une tâche horaire qui échoue et remplit
silver.log,déjà en rotation. Retour arrière : passer l'entrée à
state: absentdanstaches_planifieeset rejouer le rôle, sans toucher aux deux du collecteur.