Graph
Cases4 cases
1 to 4 of 4
IL-0543Twingate API traffic piled onto one backend behind the global load balancer, failing core services for 29 minutesTwingate2025- Symptoms
At 20:45 UTC on 28 May 2025, most of Twingate's API traffic started going to a single backend service, which was overwhelmed and returned elevated error rates, so API calls failed widely across core services.
- Trigger
A rollout that updated the routing rules of Twingate's global load balancer.
- Root cause
- Component
- Contributing factor
- Detection
The incident was detected at 20:48 UTC, three minutes after API traffic was first misrouted, and triage began.
- Remediation
- Started a rollback of the routing change at 20:52 UTC; the automated rollback stalled on infrastructure dependencies
- Applied a manual fix with local tooling at 21:09 UTC, which restored service by 21:14 UTC
- Action items
- Correct the routing rule
- Add alerts that detect backend traffic anomalies in lower environments
- Improve resource scaling thresholds
- Decouple infrastructure tooling from service dependencies so recovery has faster options
- Introduce backend sharding to isolate customer workloads and reduce the impact of incidents
IL-0285Clever Cloud's Pulsar brokers stalled in a minor upgrade, then hypervisors overloaded and crashed with kernel panicsClever Cloud2024- Symptoms
On 2 August 2024, two minutes after Clever Cloud's data team started a minor rolling upgrade of its Apache Pulsar messaging cluster to release 3.3.1, monitoring showed connection problems with the messaging platform. Producing data into the event bus failed, the backlog grew while no new producers or consumers succeeded, and agents on hypervisors, log forwarders on load balancers and deployments were affected. At 10:20 CEST the Pulsar cluster was declared defective.
- Trigger
At 10:06 CEST the data team began a minor rolling upgrade of Apache Pulsar to release 3.3.1 that also switched on a new balancer for bundle placement: the extensible load manager (loadManagerClassName=org.apache.pulsar.broker.loadbalance.extensions.ExtensibleLoadManagerImpl) with the TransferShedder load shedding strategy instead of the native OverloadShedder.
- Root cause
- Component
- Contributing factor
- Detection
Monitoring showed connection issues to the messaging platform at 10:08 CEST, two minutes after the upgrade began, and engineers confirmed at 10:09 that producing data into the event bus failed. Monitoring did not catch the first broker's failure to create the system topic, because that broker stayed up.
- Remediation
- Rolled back the new unload strategy while keeping Pulsar 3.3.1
- Shut down the client proxies to release the brokers
- Switched deployment notification events to RabbitMQ as a workaround
- Stopped all brokers and started only one, which loaded the conflicting system topic so it could be deleted, then started all brokers
- Restarted the messaging proxies, after which messages flowed again
- Stopped the watchdog so it would not reload every failed component, and started components one by one
- Disabled Metrics API ingestion to protect its storage cluster
- Stopped the long-term storage for observability metrics (the Warp10/FoundationDB cluster) to free resources
- Put all monitoring instances in all regions into maintenance so they stopped sending events to the orchestrator
- Killed the overloaded small VMs one by one
- Flagged 12 hypervisors to drain workload and shut down some load balancers to free CPU and memory
- Cleaned zombie VMs to speed up recovery
- Cleared the monitoring alert queue so queued events would not flood the orchestrator
- Added parked hypervisors to EU-FR-1 to relieve the overloaded ones
- Removed an overloaded RabbitMQ node from the cluster used by the orchestrator
- Rolling-restarted every regional L7 load balancer and every L4 load balancer
- Restarted all HV agents and the add-on provider APIs
- Destroyed all dangling VMs stuck in the stopping state
- Re-enabled Metrics API ingestion with a ramp-up QoS policy
- Action items
- Track KPIs for Pulsar broker and cluster health, hypervisor load, I/O and kernel panic reboots, zombie VMs, RabbitMQ broker and cluster health and deployment queue consumption, each by time of event, detection, decision and resolution
- Deal with too many monitoring alerts
- Look at a backup bastion, because a regional bastion is vulnerable
- Rework the control plane recovery process
- Rework the correlation between monitoring and orchestration
- Revisit fault domain separation against multi-tenancy
- Rethink runtime images and the role of the hypervisor
- Isolate waved release upgrades of Pulsar
- Redesign runtime images with better hypervisor integration
- Regionalise observability for redundancy
- Set Vector's buffer.max_events and buffer.max_size for small VMs
- Switch Vector's buffer.type from memory, the default, to disk
- Change Vector's buffer.when_full from block, the default, to drop_newest
- Tune journald verbosity and SystemMaxUse on small VMs
- Add cgroups restrictions for better process control
- Add I/O restrictions for the VM manager
- Detect zombie VMs better
- Lessons
The simulation process that validates non-minor releases was not applied to minor upgrades or to small configuration changes, and this one went straight to production. Running Clever Cloud on Clever Cloud turned into a chicken-and-egg situation: recovery needed the scheduler to carry out large actions while the control plane was itself slowed and the infrastructure had no free resources. Measuring each key indicator by time of event, detection, decision and resolution showed where the team had lacked visibility or reaction and challenged established rules.
IL-0254Square's internal DNS servers failed and Square products, services and payments were unavailable for about 15 hoursSquare2023- Symptoms
From 1:54 PM ET on 7 September 2023, Square products and services were unavailable, and at 2:02 PM ET engineers were notified of infrastructure issues and began investigating DNS. Square Online websites stayed up, but their customers could not make payments.
- Trigger
At 11:04 AM ET a host-based firewall rule change was deployed to enable region communication, which increased the size of the firewall rules on nodes. Combined with a DNS service upgrade, it put unexpected load on the internal DNS servers. The timeline also lists a DNS zone change at 1:56 PM ET.
- Root cause
- Component
- Contributing factor
- Detection
Engineers were notified of infrastructure issues at 2:02 PM ET, eight minutes after services became unavailable.
- Remediation
- Shed network traffic to the DNS servers and started bringing up new DNS servers by hand
- Deployed networking changes by hand to re-enable the authorization and access services
- Deployed the networking changes by hand to all data centers
- Rebuilt the DNS servers
- Built a new configuration from the reverted firewall ruleset and pushed it to the DNS hosts
- Action items
- Move the DNS infrastructure onto isolated infrastructure
- Add monitoring and optimizations for critical networking infrastructure
- Optimize dependencies between the deploy and platform infrastructure where feasible
- Expand support for Offline Mode and improve communication about when it is available
IL-0272New Cassandra nodes served reads for data they did not hold, so Monzo records looked missing and payments failedMonzo2019- Symptoms
On 29 July 2019 at 13:14 BST, four minutes after six new servers were added to Monzo's Cassandra cluster at 13:10, automated alerts showed a small percentage of Mastercard card transactions failing, and the tool Customer Operations uses to talk to customers through in-app chat stopped working. Customers could not log in, send or receive payments or withdraw cash, and saw inaccurate balances and transactions.
- Trigger
At 13:10 BST Monzo added six new servers to its 21-server production Cassandra cluster to add capacity, with auto_bootstrap set to false.
- Root cause
- Component
- Contributing factor
- Detection
At 13:14 automated alerts reported a small percentage of Mastercard card transactions failing, and Customer Operations reported that its customer communication tool was not working; an incident was declared at 13:15.
- Remediation
- Deployed a fix for an error-handling bug in a Mastercard service through a planned fallback mechanism, because the deployment tooling was failing
- Decommissioned the six new Cassandra servers one by one so data ownership returned to the original servers
- Reconciled the data written while the new servers were serving reads and writes, by replaying externally stored events and running consistency checks
- Action items
- Fix the use of auto_bootstrap
- Review and document the decisions behind the other Cassandra settings and write more extensive runbooks for operations such as scale-ups and restarts
- Expose more Cassandra metrics and consider alerting on strong shifts in metrics such as 'row not found'
- Split the single Cassandra cluster into several smaller clusters
- Lessons
Monzo had gaps in its knowledge of rarer Cassandra operations such as adding servers. The scale-up test with one server could not show the problem, because quorum still came from the original replicas, so it did not match adding six servers in production. The lack of metrics pointing at Cassandra delayed the response, and a single shared cluster both let one change have a far-reaching impact and made the failing part harder to find.
These 4 cases involve Automated capacity manager and Cloud load balancer. 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
Configuration change4 cases
- Component
- Contributing factor
- Organisation
IL-0543Twingate API traffic piled onto one backend behind the global load balancer, failing core services for 29 minutesTwingate2025IL-0285Clever Cloud's Pulsar brokers stalled in a minor upgrade, then hypervisors overloaded and crashed with kernel panicsClever Cloud2024IL-0254Square's internal DNS servers failed and Square products, services and payments were unavailable for about 15 hoursSquare2023IL-0272New Cassandra nodes served reads for data they did not hold, so Monzo records looked missing and payments failedMonzo2019