feat(purchases): make GCP Compute commitment creation idempotent (remaining slice of #641) #654
Copy link
Copy link
Closed
Labels
bugSomething isn't workingSomething isn't workingeffort/mDaysDaysimpact/fewLimited audienceLimited audiencepriority/p1Next up; this sprintNext up; this sprintseverity/highSignificant harmSignificant harmtriagedItem has been triagedItem has been triagedtype/bugDefectDefecturgency/this-sprintWithin the current sprintWithin the current sprint
Description
Activity
- addedbugSomething isn't workingSomething isn't workingtriagedItem has been triagedItem has been triagedpriority/p1Next up; this sprintNext up; this sprintseverity/highSignificant harmSignificant harmurgency/this-sprintWithin the current sprintWithin the current sprintimpact/fewLimited audienceLimited audienceeffort/mDaysDaystype/bugDefectDefect
on May 21, 2026 - added a commit that references this issue
on May 22, 2026 Fixed in PR #666 (GCP Compute idempotency via RequestId + deterministic name), merged into feat/multicloud-web-frontend on 2026-05-22. Closing manually (non-default-branch merge does not auto-close).
- added a commit that references this issue
on Jun 5, 2026 - added 4 commits that reference this issue
on Jul 23, 2026 - added a commit that references this issue
on Sep 27, 2026
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't workingeffort/mDaysDaysimpact/fewLimited audienceLimited audiencepriority/p1Next up; this sprintNext up; this sprintseverity/highSignificant harmSignificant harmtriagedItem has been triagedItem has been triagedtype/bugDefectDefecturgency/this-sprintWithin the current sprintWithin the current sprint
Remaining slice of #641 after PR #652 (AWS-other) + #653 (Azure). GCP Compute (
providers/gcp/services/computeengine/client.go:422) names commitmentscud-<unix-second>and never readsopts.IdempotencyToken, so a re-drive creates a second committed-use discount. Use the IdempotencyToken as the commitment name (or the requestId) so GCP rejects/dedupes a repeat. Greenfield (the #641 recovery agent confirmed no partial existed). Add a re-drive regression test: same token does not create a second commitment. Note: this is the LAST piece blocking #639 (auto-re-drive); #641 closes when this lands. Do NOT touch CloudSQL/Storage/Memorystore (those are advisory-only per #640/PR #649).