console boot: AWS backend constructors use an unbounded context Issue open
Migrated from github.com/carlosframework/platform issue #242, opened 2026-08-20. GitHub issues are closed for this repo; see AGENTS.md, "Work is tracked on amadan, not GitHub".
Still outstanding: Console boot's AWS backend constructors use an unbounded context, so a stuck call hangs boot indefinitely.
---
cmd/console/main.go constructs its AWS backends at boot with context.Background() and no timeout:
storeBackend()→objstore.NewAWSProvisioner(context.Background(), ...)(pre-existing)mailBackends()→mail.NewAWSProvisioner(context.Background(), ...)anddnsrec.NewRoute53Writer(context.Background())(added on theemailbranch, following the store pattern)
Both do real network I/O at construction — mail.NewAWSProvisioner calls STS GetCallerIdentity to resolve the account id, and the Route53 writer runs the credential chain. A hung call there hangs console start indefinitely, with no deadline to break it.
Not reachable for a deployment that has not configured the backend: each constructor is behind an emptiness guard, so an unconfigured console makes no AWS call at boot at all. It only bites a deployment that has configured one, which is the flagship.
Worth a shared boot-time constructor timeout across store and mail rather than fixing one and leaving the other — they have the same shape and the same failure.
Found by review of the mail wiring (PR #240); filed rather than fixed there because the store half predates that branch and the fix should cover both.
🤖 Generated with Claude Code