Skip to main content

Pré-vol d'un job

À quoi ça sert​

Un run peut échouer au milieu, après avoir déjà écrit d'autres tables : une colonne que la destination calcule elle-même, un compte qui ne peut pas écrire, une valeur plus longue que sa colonne. Le pré-vol le dit avant : il calcule le plan du run exactement comme le run le calcule, et demande aux connexions ce que leur rôle exige.

Rien n'est lu dans les tables et rien n'est écrit : ni le job (AutoMap n'y ajoute aucune colonne), ni la destination, ni la clé de cohérence du compte. Seuls le catalogue des bases et les droits des comptes sont consultés.

Où le voir​

  • Onglet Overview du job, carte Pre-flight : le bouton Check now lance le pré-vol. Il ne se lance pas tout seul, puisque chaque pré-vol se connecte aux bases du job.
  • Trigger Run : le pré-vol passe d'abord. Pendant qu'il tourne, une fenêtre le dit (quelques secondes, jusqu'à une minute sur un gros schéma). Si rien ne bloque ni n'avertit, le run part aussitôt ; sinon la fenêtre montre les constats :
    • un avertissement laisse le choix (Run anyway) ;
    • un constat bloquant ne laisse que Close : le run s'arrêterait de toute façon à son démarrage ;
    • un pré-vol qui n'a pas pu aboutir (connexion injoignable, pas de worker) laisse le choix : le run refait le contrôle à son démarrage.
  • Page d'un run, section Pre-flight of this run : ce que le run a trouvé à son démarrage. Elle est ouverte quand le run s'y est arrêté.

Le pré-vol demande, en plus du droit de voir le job, celui de voir les connexions et ce qu'elles stockent : il s'y connecte avec leurs identifiants.

Les niveaux​

NiveauSens
BloquantLe run échoue quelles que soient les lignes : il s'arrête à son démarrage, avant d'écrire.
AvertissementLe run peut échouer, ou copier autre chose que prévu, selon les lignes.
NoteCe que le run fait, et qu'il vaut mieux savoir.

Les constats​

ConstatNiveau
Droit manquant sur une connexion (lecture, écriture, vidage, triggers, suspension des FK), avec l'instruction GRANT qui l'accordeBloquant
Table, ou colonne que le run écrit, absente d'une connexion (la destination, quand le run ne crée pas le schéma)Bloquant
Le moteur ne sait pas exécuter le job (fonctions pseudo.* sous Benthos, cas refusés par Athanor)Bloquant
Colonne calculée par la destination qui recevrait une valeurBloquant sous Benthos ; note sous Athanor, qui ne l'écrit pas
Valeur plus longue que la colonne de destination (colonne source plus large, UUID, SHA-256, catégories)Avertissement
Transformer que l'éditeur de job ne propose pas pour la colonne (type, clé étrangère, colonne NOT NULL, identité), le même refus que la validation des mappingsAvertissement
Même valeur sur toute une clé unique (catégorie unique)Avertissement
Table sans clé réécrite en double quand Benthos reprend une écritureAvertissement
Table lue en un seul flux (pas de clé, ou clé non lue par le job)Note
Triggers de destination mis de côté pendant le run, puis remisNote
Référence vers une ligne que le subset écarte, écrite à NULLNote

Seuls MySQL et PostgreSQL sont analysés pour l'instant.