systemsfailed.devfailure archive
← All incidents

Failure class

Automation misfire

A failover, autoscaler, or cleanup job does the wrong thing, confidently.

9 incidents on record

AWS2024-07-30/~7 h

Kinesis cell manager mistakes healthy hosts for dead

For nearly seven hours in US-EAST-1, an internal Kinesis Data Streams cell degraded, raising latencies and error rates across CloudWatch Logs, S3 event delivery, Data Firehose, ECS, Lambda, Redshift, and Glue, with log backlogs taking until the next day to clear.

Lesson

An automated placement or failover system validated against typical workloads can still misbehave on a skewed profile — test cluster-management automation against shard-count extremes, not just throughput extremes, and cap its reaction rate so a false health signal cannot trigger a redistribution storm.

GitHub2024-08-14/36 min

Config change silenced database health checks for 36 minutes

All GitHub.com services were fully inaccessible for all users worldwide for 36 minutes on the evening of August 14, 2024.

Lesson

Database configuration changes need staged rollout and automated fast-rollback — a single bad config push that breaks health check responses can cause the routing layer to simultaneously drop all database hosts, producing a total outage with no code change involved.

Cruise2023-10-02/24 days to fleet pause

The collision logic that chose to keep moving

A driverless Cruise vehicle pulled a pedestrian forward after contact; Cruise paused its driverless fleet 24 days later and recalled the collision-detection software installed on 950 automated-driving systems.

Lesson

When perception is uncertain after a collision, the minimum-risk fallback must prevent additional motion. Test rare, high-severity scenarios in simulation, constrain uncertain classifications from authorizing irreversible actuation, and evaluate the complete perception-to-action chain. Cruise's remedy would have kept the vehicle stationary.

incident.io2021-07-12/< 1 day (investigation and fix)

Database upgrade made incident IDs skip 32 numbers

Multiple customer organizations saw their incident identifiers jump by up to 32 (e.g. from #INC-20 to #INC-52), eroding trust in the numbering system, though no data was lost or misattributed.

Lesson

Never expose raw Postgres sequences as meaningful user-facing identifiers — sequences do not guarantee gap-free increments and any failover, crash, or upgrade can silently advance them by up to 32; use an explicit MAX+1 approach instead.