Cases2 cases
1 to 2 of 2
- Symptoms
On 24 March 2026 learn.mit.edu went down shortly after a regular release. An engineer reported the outage with a linked Sentry issue, and Sentry soon showed many 504 responses from the site.
- Trigger
A regular release deployed a query pattern change to the learning resource APIs that put an aggregation inside the main query.
- Root cause
- Component
- Contributing factor
- Detection
An engineer reported the outage with a linked Sentry issue, and Sentry showed many 504 responses. The RDS FreeStorageSpace metric showed that the database had used up its storage.
- Remediation
- Rolled back the release's query pattern change
- Deleted the read replica so the database could flush its buffered WAL files
- Terminated all active queries running longer than 10 minutes with pg_terminate_backend, after the backup finished and with guidance from AWS Support
- Action items
- Explore enabling enhanced analytics on the production Learn database
- Document rollback steps on the platform engineering documentation site
- Make easy rollback part of the new release management framework
- Alert on DiskQueueDepth for production databases without making the alert too noisy
- Alert when API and site response times are more than 30% above normal
- Run a gameday on an example production database outage
- Adopt Rootly for incident management, with an automatic channel and an automatic incident transcript
- Write an outage runbook: start a call, have the on-call engineer watch metrics until they return to baseline, and give one person the communications
- Put the query that terminates long-running queries, and a version that finds them for selective termination, into a production Postgres runbook
- Open an issue on redesigning the Learn Resource View Event model, which is only used for counts
- Use anonymised production data generation tools to bring RC up to production data volume, on separate infrastructure for load testing
- Change the view count to use a precomputed column
- Lessons
The change was reviewed by senior engineers and showed no problems locally or on RC, but data scale and load in production are very different, and nothing in the system's health showed that adding a COUNT aggregation would make disk usage explode.
IL-0229bunny.net's DNS servers crashed in a loop on a corrupted routing database file and could not fetch a fix from its CDNbunny.net2021- Symptoms
On 22 June 2021, within minutes of an update released at 8:25 AM UTC, bunny.net's global fleet of close to 100 DNS servers kept crashing and restarting, more than 60% of traffic was lost, hundreds of Gbits of throughput disappeared, and over 750,000 websites were affected. After 10 minutes the team realised that the DNS servers were restarting and dying and that nothing could bring them back up in that state.
- Trigger
At 8:25 AM UTC bunny.net released an update meant to reduce the download size of the SmartEdge optimization database, and it uploaded a corrupted file to Edge Storage.
- Root cause
- Component
- Contributing factor
- Detection
About 10 minutes after the release, the team realised that the DNS servers were restarting and dying.
- Remediation
- Deployed by hand an update that disabled the SmartEdge system on the DNS nodes
- Routed all requests through Frankfurt instead of Madrid on a couple of DNS servers
- Migrated the deployment systems and files to a third-party cloud storage service
- Rewired the deployment system and DNS software to the new storage and deployed
- Synced the databases and deployed the newest file sets through the third-party service
- Action items
- Phase out the BinaryPack library as a hot-fix
- Test third-party libraries more extensively
- Migrate the internal APIs to an independent third-party service
- Find how to stop non-critical software from becoming a single point of failure across clusters
- Make the DNS system keep a local copy of all backup data with automatic failure detection
- Lessons
bunny.net had built its systems to rely on each other, including the critical parts of its internal infrastructure, so one corrupted file brought down several layers of redundancy with no way back. A part of the infrastructure treated as non-critical turned out to be a single point of failure for several clusters at once, which canary deployments did not catch. Building infrastructure inside its own ecosystem lets one failure cascade through all of it. In the rush to fix the outage the team made typos and mistakes, and the final deployment came after it calmed down and double-checked everything.
These 2 cases involve CDN and edge network and Database. kubegap audits a Kubernetes cluster for gaps like these, read-only, from Claude Code or Codex; its checks cite public reports like the ones in this library.
By root cause1
Faulty deployment2 cases
- Contributing factor
- Organisation