Incident Library

IL-0372 Heroku · 2021-02-25database

Heroku apps could not connect to about 1% of hobby-tier Postgres databases after the databases' host names changed

During an upgrade process in an upstream system, the host names of several shared database systems that host hobby-tier Heroku Postgres databases were changed by mistake. The new host names were not passed to the systems that update Heroku apps with new information, so the connection strings in the attached apps pointed at the old names and the apps could not connect. Soon after the problem was detected, Heroku halted the upgrade process to limit the impact. Engineers then updated all the relevant systems with the new information and published a new release on each affected app, and during the incident customers were given a workaround of rotating their database credentials. Error rates were back to normal at 18:29 UTC, and the follow-up puts the end of the impact at 17:10 UTC.

Severity
–
Scope
Connections from Heroku apps to about 1% of hobby-tier Heroku Postgres databases
Users affected
–
Region
–
Time to detect
–
Time to resolve
17h 10m

Symptoms

From 00:00 UTC on 25 February 2021, Heroku apps attached to about 1% of hobby-tier Postgres databases could not connect to their databases. Heroku first posted that it was investigating connectivity issues with Hobby tier databases at 03:39 UTC.

The connection strings of the affected databases had changed, but the attached apps still had the old ones. While the fix was rolling out, a database owner could bring the database back by rotating its credentials with `heroku pg:credentials:rotate`, adding the `--all` flag when the database had several credentials.

Symptom Stale endpoint routingHigh error rate

Root cause

Root cause Breaking change in an upgrade

Contributing factor –
Trigger
An upgrade process in an upstream system wrongly changed the host names of several shared database systems.

Detection

–

Remediation

Action items

Lessons

–

Sources

Related cases

Check your cluster for this

kubegap audits a Kubernetes cluster for conditions like the ones in this case, Database, Service discovery among them, read-only, from Claude Code or Codex. Its checks cite public reports like this one.

For AI tools and scripts

The API needs no key. The MCP server offers search_incidents, get_incident, list_incidents, get_topic and vocab; both are explained on API and MCP.