Cases5 cases
1 to 5 of 5
IL-0432AutoReserve notifications silently went unsent as Memorystore for Redis 3.2 rejected writes with OOM below its limitHello Inc.2026- Symptoms
A bug report said that some reservation notifications in the AutoReserve restaurant reservation service never arrived. Of the several kinds of notification sent as a reservation progresses, only one kind sometimes arrived and sometimes did not.
- Root cause
- Component
- Contributing factor
- Detection
A bug report from AutoReserve said that some reservation notifications were not arriving.
- Remediation
- Scaled the Memorystore for Redis instance from 8 GiB to 16 GiB, which did not stop the write rejections
- Upgraded Redis from 3.2 to 7.2, which removed the fragmentation and stopped the write rejections
- Moved the notification sent status from Redis to the relational database
- Action items
- Consider enabling active defrag if physical memory use rises above 1.3 times logical memory use
- Lessons
The logs and the instance page metrics did not show the cause; it took looking inside Redis with INFO memory to see physical memory far above logical memory. A cache is a place for values that can be rebuilt if lost and whose writes may fail, so the sent status, which had to persist and be decided once under concurrent processing, belonged in the relational database.
IL-0326A retention clean-up job filled the disk of MailPace's managed Postgres, which stayed offline for just over two hoursMailPace2023- Symptoms
At 13:36 BST on Friday August 11th 2023, minutes after MailPace reran its data clean-up job with more memory, notifications arrived that all database transactions were failing across multiple services. The managed Postgres database had gone offline, did not come back when restarted, and reported that it was out of space.
- Trigger
The daily retention clean-up job, which had been failing with killed, was rerun with its memory raised from 1gb to 8gb, and its large destroy_all deletions filled the database disk.
- Root cause
- Component
- Contributing factor
- Detection
Notifications that all database transactions were failing across multiple services arrived as soon as the outage began; the provider was automatically notified at 99% storage. MailPace's two status pages did not detect the outage.
- Remediation
- Contacted the managed database provider's support
- Notified users on Twitter and Mastodon
- Prepared an offsite backup from six hours earlier on a new database instance as a fallback
- The provider migrated the database to a larger instance
- Removed the old data in production by hand, day by day, with an updated query
- Action items
- Delete old data in batches of 50 records with in_batches in the clean-up job
- Run the clean-up job four times a day instead of once
- Stay on a much larger database instance with room to grow
- Add cron monitoring to all cron jobs
- Point the status pages at a /health endpoint that checks database access and returns a 500 error on failure
- Investigate a hot-replica database for automated failover
- Lessons
Several causes came together: a clean-up job that failed silently, a naive deletion that grew huge once data had piled up, a database plan without headroom for growth, and status pages that missed the outage, presumably because https://app.mailpace.com still answered 200 while the database was down. MailPace also advises that critical services such as email sending be set up with more than one provider.
IL-0211A Mandrill PostgreSQL shard shut down at transaction ID wraparound and email sending was impaired for about 40 hoursMailchimp2019- Symptoms
From 05:35 UTC on 4 February 2019 Mandrill, Mailchimp's transactional email service, sent only 80% of queued emails, because one of its PostgreSQL shards, shard4, stopped accepting writes. When Mandrill engineers opened an investigation at 11:58 UTC, they saw a sharply elevated load on shard4.
- Trigger
At 05:35 UTC on 4 February the transaction ID counter of shard4, the busiest Mandrill PostgreSQL shard, reached its upper limit and PostgreSQL shut the database down to protect against wraparound.
- Root cause
- Component
- Contributing factor
- Detection
The first exception was logged overnight but was buried by unrelated exceptions in the centralized error reporting. Mandrill engineers opened an investigation at 11:58 UTC and, while looking for the source of the rising load on shard4, found the wraparound at 12:56 UTC.
- Remediation
- Put shard4 into standalone mode and started VACUUM at 14:16 UTC on 4 February
- Stopped and restarted the vacuum with settings that made it run faster
- Started a dump and restore of the database without the Search and Url tables while the vacuum ran
- Replaced storage volumes on the Mandrill app servers whose disks were filling with queued jobs and logs
- Moved the job-queue tables from shard4 to other live shards
- Truncated the Search and Url tables on the locked database at 19:12 UTC on 5 February, after which the vacuum finished in about an hour
- Started sending from the backlog at 21:36 UTC
- Added alerting for XID wraparound by 22:40 UTC
- Lessons
Mailchimp named the factors that slowed its response: knowledge of and access to Mandrill systems and monitoring rested with a few people, Mandrill logging needed a locally writable disk, logs of malformed API requests were hard to separate from real application errors, job health was hard to see, and the disk space problem made partial deployments for triage risky. What helped was trained incident commanders with clear roles (incident commanders in 3-hour rotations, scribes, technical liaisons and points of contact between teams), periodic summaries with a list of recent and open decisions, and taking time in a video meeting to reassess, which led to the truncation. Running in the cloud let the team expand storage quickly, and the team was lucky that the largest table holding up the vacuum held data it could delete.
IL-0334Instapaper's RDS MySQL bookmarks table hit the 2TB ext3 file size limit, inserts failed and the service went downInstapaper2017- Symptoms
On Wednesday, February 9, 2017 at 12:30PM PT, inserts of new entries into the bookmarks table of Instapaper's MySQL database on Amazon RDS started to fail with an error. The bookmarks table, which stores the articles Instapaper users save, had grown past 2TB, and the Instapaper service was down until Thursday, February 10 at 7:30pm PT.
- Trigger
At 12:30PM PT on February 9 the bookmarks table grew past the 2TB file size limit of the instance's filesystem.
- Root cause
- Component
- Contributing factor
- Remediation
- Dumped the production database to a 5.5TB RAID-0 disk on an i2.8xlarge instance with Pinterest's SRE team
- Launched a temporary production instance with limited access to archives
- Set up an Aurora read replica of the old database as one recovery path
- Imported the data into a new MySQL RDS instance without secondary indexes, then built the indexes
- Had an Amazon engineer rsync the data from the ext3 filesystem to an ext4 filesystem mounted on the failed database
- Synced the new ext4 database with the temporary production database through row-based replication
- Promoted the new database to master and pointed the application at it
- Action items
- Define a workflow that escalates system-wide Instapaper outages immediately to Pinterest's SRE team
- Test MySQL backups every month instead of every three months
- Put a process in place with Pinterest's SRE team to recover from this type of failure
- Lessons
A filesystem limit that Instapaper did not know about and could not see made both the production database and all its backups useless, and the only way out was to restore the data onto a new filesystem. Because the hosted database could only be reached through MySQL, filesystem-level fixes such as rsync needed Amazon engineers. Even with a perfect response, rebuilding the database would have taken at least 10 hours. The lack of a disaster recovery plan for this kind of failure, and the estimate of the dump time from row counts, made the downtime and recovery longer than necessary, and the response could have drawn better on Pinterest's and AWS's people. The new escalation workflow and monthly backup tests would not have prevented this failure but would speed up the response to a future one.
IL-0520logs.cloud.gov trapped users in a login redirect loop because its full Redis session store stopped saving sessionscloud.gov2016- Symptoms
At 7:12pm Eastern Time on 5 July 2016, logs.cloud.gov, the cloud.gov log search service, sent users into a login redirect loop, so they could not log in to the service.
- Root cause
- Component
- Contributing factor
- Remediation
- Moved Redis on the logsearch service to a much larger memory instance so it could keep logs while Elasticsearch was down
- Corrected the Elasticsearch memory limits and the /tmp noexec hardening setting and redeployed the cluster
- Redeployed the Kibana instance and verified the logs once the cluster deployment was complete
- Action items
- Add a failure alert that checks whether logs are coming through
- Make Redis auto-scaling or highly available so that failures in more fragile downstream components do not cause data loss
- Extend the incident response plan to start with events that are not security-specific
- Create a chaos bot for the logs.cloud.gov service
These 5 cases involve Database and In-memory cache. 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
Capacity exhaustion5 cases
- Component
- Contributing factor
IL-0432AutoReserve notifications silently went unsent as Memorystore for Redis 3.2 rejected writes with OOM below its limitHello Inc.2026IL-0326A retention clean-up job filled the disk of MailPace's managed Postgres, which stayed offline for just over two hoursMailPace2023IL-0211A Mandrill PostgreSQL shard shut down at transaction ID wraparound and email sending was impaired for about 40 hoursMailchimp2019IL-0334Instapaper's RDS MySQL bookmarks table hit the 2TB ext3 file size limit, inserts failed and the service went downInstapaper2017IL-0520logs.cloud.gov trapped users in a login redirect loop because its full Redis session store stopped saving sessionscloud.gov2016