Moteur : une bascule plus récente périme la vérification du rendu, plan et retour en POST

La vérification du rendu du gabarit après une mise à jour attend jusqu'à
vingt minutes que le nouveau moteur réponde. Un retour à la version
précédente, une autre version installée ou une seconde mise à jour pendant
cette attente la laissaient courir : elle comparait alors l'ancien moteur à
celui d'une autre bascule, ou écrasait le relevé de la suivante.

- Chaque bascule ouvre une génération ; une vérification périmée s'arrête
  sans rien ranger, et son relevé n'écrase plus le suivant. Retour et
  « utiliser » effacent le relevé, qui parlerait d'un moteur arrêté.
- /api/engine/plan (registre) et /api/engine/rollback (configuration et
  redémarrage) refusent tout autre verbe que POST — l'interface n'utilise
  que POST.
- Tests : vérification annulée en attente, relevé périmé ignoré, GET refusé.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
MichaelandClaude Opus 5.5 committed 2026-10-04 15:24:21 +02:00
1 parent 5b834d54b2
commit 5d37bef0ce
3 files changed
+122 -6

No files matched your search

+3
View File
@@ -194,6 +194,8 @@ func engineRunUpdate(tag string, preserveOff bool) {
ref, haveBefore := engineRenderBefore(ctx)
cancel()
// La vérification d'une bascule précédente parlerait du moteur qu'on quitte.
engineRenderCancel()
if err := engineSwitchTo(bin); err != nil {
lcFail(err)
return
@@ -280,6 +282,7 @@ func handleEngineUse(w http.ResponseWriter, r *http.Request) {
return
}
engineRememberPrevious(left, bin)
engineRenderCancel()
if serviceIsActive() {
_ = serviceAction("restart")
}