Symptom: 409 / "Requested entity already exists" / "Already exists" on terraform apply or gcloud create.
Cause: the resource already exists: a previous partial run created it, someone made it by hand, or a retried request actually succeeded the first time.
Confirm:
1. `gcloud ... describe [NAME]` (or console) - does it exist? Does its config match what you wanted?
2. Terraform: `terraform state list | grep [NAME]` - absent from state confirms the state/existence split.
3. Check timestamps: created seconds before your apply means your own retry raced.
Fix:
- If it matches intent: import it. `terraform import [ADDRESS] [IMPORT-ID]`, with the import ID format from that resource's provider docs. Then `terraform plan` should be clean.
- If it does not match: decide deliberately whether to delete and recreate or adopt and reconfigure. Do not rename your resource to dodge the 409; that leaves an unmanaged twin.
- gcloud scripts: add existence checks before create (`describe` first, create on 404) so reruns are idempotent.
Root-cause the repeat: if this keeps happening, your automation is not idempotent. Common pattern: create call times out client-side but succeeds server-side, then the retry 409s. Handle timeouts as "unknown, check before retry".
Verify: after import, `terraform plan` shows no changes; after idempotency fixes, rerunning the script twice in a row succeeds.