Incident Library
Applied filters Root causeConfiguration changeFactorIneffective rollbackClear allEvery case under the filters, with no sentence; newest first.
Suggested filters Search, and the values found in your words appear here.

Graph

  • Root cause
  • Component
  • Symptom
  • Contributing factor
  • Case

Cases7 cases

4 to 7 of 7

  1. 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.

  2. Symptoms

    On 23 November 2021 at 09:39, two minutes after a change on the eqiad core routers, alerts fired because Icinga in eqiad could not reach the public text-lb address in eqsin (Singapore). For about 12 minutes eqiad could not reach hosts in other data centers, such as the cache PoPs, through their public IP addresses.

    Trigger

    At about 09:37 a change on cr1-eqiad and cr2-eqiad, made as part of task T295672 to influence BGP route selection, removed a BGP setting that sets the BGP "MED" attribute to the OSPF cost of reaching the BGP route's next hop.

    Root cause
    Component
    Contributing factor
    Detection

    Icinga health checks against edge caching clusters alerted at 09:39; the first alert was Icinga in eqiad failing to reach the public text-lb address in eqsin.

    Remediation
    • Reverted the configuration change on both eqiad routers
    • Forced a reset of the BGP session between the two eqiad routers
    Action items
    • Updated T295672 with further detail on the incident and a proposal to adjust the BGP sessions to address the "second IXP port" issue and prevent this from happening again
  3. Symptoms

    At 09:20 CET on 13 October 2021, during a planned change on a router, IPv4 traffic across OVHcloud's whole network stopped being routed, while all IPv6 traffic stayed reachable. The team detected a problem with the router's performance at 09:21 CET and escalated at once.

    Trigger

    A planned change to a router in the Vint Hill datacentre in the United States, meant to strengthen anti-DDoS protection, included a command to regulate the redistribution of BGP into OSPF, and the router did not interpret that command correctly.

    Root cause
    Component
    Contributing factor
    Detection

    At 09:21 CET the team detected a problem with the router's performance and started the escalation process.

    Remediation
    • Disconnected the optical equipment to isolate the router's connectivity
    • Powered off the faulty router
    • Stabilised connectivity to restore the remaining services
    Action items
    • Re-evaluate the change procedure for this type of equipment, which applies the command line natively
    • Strengthen the related change process
  4. Symptoms

    From 12:33 US/Pacific on 6 November 2017, the App Engine Memcache service was unavailable to applications in all regions. Google received an automated alert at 12:34, and the status page said all projects using Memcache were affected.

    Trigger

    A configuration update, after which the database entity holding the mapping of applications to datacenters could no longer be read or written.

    Root cause
    Component
    Contributing factor
    Detection

    Google received an automated alert at 12:34 US/Pacific, one minute after the start.

    Remediation
    • Sent the configuration update with a long enough deadline, which synchronised the database replicas and let clients read the mapping
    • Ramped Memcache traffic back up gradually while the error rate fell
    Action items
    • Reduce the number of readers of the global configuration to avoid contention during writes
    • Regionalise the configuration to limit the blast radius of similar failures
Check your cluster for this

These 7 cases involve BGP routing 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

Configuration change7 cases

  1. IL-0400 Public sector sites across Wales lost connectivity for over 8 hours as a PE router wrongly advertised a default route
    PSBA2026
  2. IL-0487 Autumn's Postgres CPU spiked and about 10% of API requests failed after a collation change left the main query unindexed
    Autumn2026
  3. IL-0528 Cloud Pub/Sub could not publish or subscribe in ten regions, and some ordered subscriptions stayed stuck for hours
  4. IL-0285 Clever Cloud's Pulsar brokers stalled in a minor upgrade, then hypervisors overloaded and crashed with kernel panics
  5. IL-0266 Eqiad routers looped traffic between each other after a BGP MED change and could not reach other sites' public IPs
  6. IL-0228 IPv4 routing across OVHcloud's global network broke after a router change put the full internet routing table into OSPF
  7. IL-0292 App Engine Memcache was down in all regions for 1 hour 50 minutes when its global datacenter mapping could not be read