Cases3 cases
1 to 3 of 3
IL-0557Database transaction locks piled up on Storj's US1 satellite, and uploads and downloads failed with timeouts for 2 hoursStorj2025- Symptoms
From 21:04 UTC on 7 August 2025, database transaction locks on the Storj US1 satellite started to increase, and upload and download requests began to fail. The on-call team was paged at 21:14 UTC.
- Trigger
An unusually high volume of concurrent uploads to the same objects reached the US1 satellite.
- Root cause
- Component
- Contributing factor
- –
- Detection
The on-call team was paged at 21:14 UTC, ten minutes after database transaction locks began to rise.
- Remediation
- Reset the state of connections periodically to keep contention errors from growing in a cascade
- Action items
- Remove the sources of contention between database transactions with code changes
- Add monitoring and alerts for increased levels of database locks
- Look for further process and system improvements, including tools that reduce or remove the need for manual maintenance
IL-0301Basecamp 3's primary database went into total gridlock at the top of the hour and Basecamp 3 went down twice37signals2022- Symptoms
At 13:00 UTC on Monday, June 27, 2022, Basecamp 3 became extremely slow, then showed error pages, and then stopped working altogether. Basecamp 2 and Basecamp Classic kept working normally.
- Trigger
At 13:00 UTC, when Basecamp 3 sends scheduled notifications in massive batches, a rush of demanding queries reached the primary database and started a cascade of heavy lock contention.
- Root cause
- Component
- Contributing factor
- Detection
The team saw the Basecamp 3 primary database become completely congested within 30 seconds of 13:00 UTC and responded immediately.
- Remediation
- Paused and disabled parts of Basecamp 3, such as delaying progress report emails
- Failed over from the primary database to a replica, which brought Basecamp 3 back until it tipped over again
- Put Basecamp 3 into maintenance mode
- Set hard limits on database query time
- Brought features back online step by step with the query limits in place
- Action items
- Keep hard limits on database query time so slow queries fail instead of piling up
- Tune the limits on concurrency
- Treat top-of-the-hour database load spikes from scheduled batches as unacceptable
- Reduce the number of parallel workers for some scheduled jobs
- Let some scheduled activities run over several minutes instead of all at once
- Move bursty queries from the primary database to read-only replicas
- Fix the quiet performance regressions found in a review of the past year of database metrics
- Find and spread out other bursty activities that concentrate load on the database
- Tune the database for more predictable behaviour under heavy load and high concurrency
- Add observability into the database's internal locking and transaction states
- Build tools to switch off high-load Basecamp 3 features selectively during an incident
- Run operational fire drills for a wedged database
- Evaluate upgrading the database software and hardware
- Set service level objectives for the components behind Basecamp 3
- Hold quarterly performance and load reviews to catch slow, subtle changes
- Lessons
A system running just past its limits can flip from stable to unstable without any particular trigger, and steady growth plus small regressions that raised no alarm had brought Basecamp 3's primary database to that point. Under lock contention, terminating queries does not relieve the database, because rolling back their transactions waits on the same locks. The team struggled to respond with confidence because there was no single clear cause and little visibility into the database's internals.
IL-0457The HA HDFS NameNode of a log-collection Hadoop cluster failed over around 09:00 after its ZKFC health check timed outLINE2019- Symptoms
The NameNode of an HA HDFS cluster run by LINE Data Labs occasionally failed over at a particular time of day, around 09:00. At the failover the ZooKeeper Failover Controller (ZKFC) logged that its NameNode health check had timed out after 60 seconds: WARN ha.HealthMonitor (HealthMonitor.java:doHealthChecks(211)) - Transport-level exception trying to monitor health of NameNode at xxxx/xxx.xxx.xxx.xxx:xxxx: java.net.SocketTimeoutException: 60000 millis timeout while waiting for channel to be ready for read.
- Trigger
Around 09:00 the NameNode began deleting the files under the .Trash checkpoint (TrashPolicyDefault#deleteCheckpoint), and deleting one directory held the FSNamesystem write lock for about 36 seconds.
- Root cause
- Component
- Contributing factor
- Remediation
- Changed fs.trash.interval from 4320 to 1440 so files under .Trash are deleted daily instead of every 3 days
- Configured a dedicated Service RPC port for the ZKFC and DataNode health checks
These 3 cases involve Database and Database failover manager. 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 exhaustion3 cases
- Contributing factor
- Organisation
IL-0557Database transaction locks piled up on Storj's US1 satellite, and uploads and downloads failed with timeouts for 2 hoursStorj2025IL-0301Basecamp 3's primary database went into total gridlock at the top of the hour and Basecamp 3 went down twice37signals2022IL-0457The HA HDFS NameNode of a log-collection Hadoop cluster failed over around 09:00 after its ZKFC health check timed outLINE2019