[Bug] do_cleanup attend uniquement la complétion du job de delete et ignore l'échec (blocage 10 min + job échoué non purgé) #15
Reference in New Issue
Block a user
Delete Branch "%!s()"
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?
Constat
Dans
operator/src/instance_common.rs,do_cleanup()crée le job de suppression puis attend uniquement la conditionis_job_completed:Problèmes
is_job_completed()ne se déclenche que surComplete. Si le job de delete part enFailed(ce qui arrive si la désinstallation rate), la condition n'est jamais vraie : on attend le timeout complet de 10 minutes avant de remonter uneElapsed, à chaque reconcile. La désinstallation d'une instance cassée devient très lente et bruyante.job_api.delete(...)final n'est atteint qu'après une complétion réussie. En cas de timeout/erreur, le?propage l'erreur et le job (et son pod en erreur) reste en place ; au reconcile suivant,createpeut échouer (AlreadyExists) — il n'y a pas deupsert/delete-préalable comme pour le job d'install (upsert_job).À comparer avec
do_reconcilequi passe parupsert_job()(patch SSA + fallback delete/create) — le chemin cleanup n'a pas cette robustesse.Pistes
is_job_terminal()déjà présent dansoperator/src/jukebox.rs, puis brancher : succès ⇒ purge du job +await_change(); échec ⇒ log + requeue temporisé (sans attendre 10 min).upsert_job()/ un delete-préalable pour le job de delete afin d'éviter lesAlreadyExistsau retry.Tests
is_job_terminal/classification (Complete vs Failed) — réutiliser celui dejukebox.rs.throw) → l'opérateur doit requeue rapidement avec un message clair, pas attendre 10 min, et ne pas accumuler des jobsAlreadyExists.Note de liaison avec #12 : la proposition v2 de #12 prévoit, quand aucun paquet n'est trouvable au cleanup, une condition
E_PACKAGE_GONE+ requeue temporisé au lieu de l'erreur dure — ce chemin s'appuie sur la robustesse du job de delete décrite ici (condition terminale Complete ou Failed, purge du job dans tous les cas, upsert au retry). Cette issue est donc un prérequis naturel de #12-C ; à traiter en premier. La proposition reste valable telle quelle, rien à modifier.Analyse et rédaction : Claude (assistant IA), publié via le compte de Xavier.
Dans l'absolu la solution me parait saine et couvre en effet un angle mort actuel du code.
Je veux bien ce même axe d'analyse en complément de #17 sur les job des jukebox qui sont, au fond, encore plus souvent problématiques