fix(infra): cdk destroy of the Fargate stack fails when the last blue/green deploy left green live

Offen
#1,618 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 1 Tag

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Anfängerfreundlichkeit
55/100
Issue-Typ
Bug
Klarheit
Klar beschrieben
Aktivitätsstatus
Aktiv
Tech-Stack
aws, python

Rechercherichtung

Start in infrastructure/cdk/stacks/fargate_service_stack.py, where the listener rules (https_listener.add_target_groups(...)) and the TestListener are defined, and check which target groups each one depends on. Make every rule and the TestListener depend on both blue and green target groups using node.add_dependency, then add a synth test that asserts the DependsOn entries. Done when cdk synth shows the dependencies and the docs/self-hosting/cdk.md 'Tearing an environment down' section covers the interim workaround.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

bug

cdk destroy experimentation-fargate-<env> fails with DELETE_FAILED on the green target group ("target group ... is currently in use by a listener") whenever the last blue/green deployment left the live listener rules pointing at green.

Why: CodeDeploy's blue/green deployment moves the HTTPS listener's rules between the blue and green target groups outside CloudFormation. After an odd number of deployments the rules point at green, while the template still describes the rules the stack created. In infrastructure/cdk/stacks/fargate_service_stack.py neither the listener rules (https_listener.add_target_groups(...)) nor the TestListener declare a dependency on both target groups (there is no add_dependency / DependsOn between them), so CloudFormation may delete the green target group before the rules and the listener that still use it. The rest of the stack is deleted; a second cdk destroy then succeeds. This is deterministic, not a race.

Expected: cdk destroy succeeds in one run whatever target group is live.

Fix: make every listener rule and the TestListener depend on BOTH target groups (node.add_dependency on each), so CloudFormation deletes the rules and listeners before either target group; pin it with a synth test that asserts the DependsOn entries. Until it ships, docs/self-hosting/cdk.md's "Tearing an environment down" section should say: if the Fargate stack's delete fails with "in use by a listener", run cdk destroy for that stack again.

Found while tearing down a test environment. Priority is set in the pre-launch bug triage.

Vorherrschende Sprache
Python
Sterne
0
Forks
4
Ø Merge
7 Std. 30 Min.
Gemergte PRs (30 T.)
468

Entwicklungsumgebung

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus Controlvar/controlvar

Alle Issues in Controlvar/controlvar

Ähnliche Issues

Weitere Issues zu Python

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.