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

Cases4 cases

1 to 4 of 4

  1. Symptoms

    On 13 January 2022, shortly after 07:28 UTC, Mozilla saw a spike in crashes reported through the Firefox crash reporter and received several reports, from inside and outside Mozilla, of the browser hanging. For close to two hours Firefox was unusable for users worldwide and could not load web content.

    Trigger

    At 07:28 UTC on 13 January 2022 GCP deployed an unannounced change that made HTTP/3 the default for load balancers set to "Automatic (default)", so some Firefox connections to Mozilla's services, including Telemetry, started using HTTP/3 instead of HTTP/2.

    Root cause
    Component
    Contributing factor
    Detection

    A spike in crashes reported through the Firefox crash reporter, and reports of browser hangs from inside and outside Mozilla.

    Remediation
    • Explicitly disabled HTTP/3 on the GCP load balancers at 09:12 UTC
    Action items
    • Work with GCP to improve the situation around unannounced changes such as the HTTP/3 default
    • Review all service configurations to avoid similar mistakes
    • Run more system tests with different HTTP versions
    • Find ways to make the browser more resilient to such problems and to speed up incident response
    Lessons

    The hang needed three things together: a provider-side change to the HTTP version, a Rust component calling the network stack through viaduct, and a case-sensitive header lookup deep in the HTTP/3 code. Leaving the load balancers on an automatic default let the provider's change apply without any action from Mozilla, and an announcement would likely have led to a controlled test in staging first. A change of HTTP version and an extra networking layer such as viaduct are significant enough to be covered by system tests.

  2. Symptoms

    Between 13:34 and 17:33 PST on Sunday 6 December 2020, many Render services in the Oregon region returned 503 (Service Unavailable) errors at an elevated rate, and the Render Dashboard was affected. Render's monitoring alerted the team at once. The status page reported upstream load balancers having trouble connecting to the rest of the infrastructure, and after an apparent fix the connectivity error rates rose again before the final fix.

    Trigger

    At 13:34 PST a customer API hosted in Oregon, one of the services with the highest request rates in the region, began holding incoming requests until they timed out.

    Root cause
    Component
    Contributing factor
    Detection

    Render's monitoring system notified the team immediately.

    Remediation
    • Rolled out a fix to the load balancing algorithm across all load balancers
    Action items
    • Add mechanisms that isolate services from each other in the routing and load balancing layers
    • Increase test coverage of the load balancing code
    • Add synthetic failure states to the continuous integration test suites
    • Put more focus on chaos engineering
  3. Symptoms

    From 12:17 to 12:49 PDT on 17 July 2018, Google Cloud HTTP(S) Load Balancers answered a share of requests with 502 return codes, and connections to TCP/SSL Proxy Load Balancers were reset. The share of failed requests moved between 33% and 87% during those 32 minutes, and automated monitoring alerted Google engineers at 12:19.

    Trigger

    A configuration change in the production environment intermittently set off a bug in a new feature of the second-layer Google Front Ends.

    Root cause
    Component
    Contributing factor
    Detection

    Automated monitoring alerted Google's engineering team at 12:19 PDT, two minutes after the 502s began.

    Remediation
    • Reverted the configuration change at 12:44 PDT, which stopped the GFE restarts
    Action items
    • Add safeguards that disable features not yet in service
    • Harden the GFE testing stack against latent bugs in production binaries that make a task restart
    • Isolate the shards of GFE pools further from each other to reduce the scope of failures
    • Build a consolidated dashboard of all configuration changes for GFE pools
  4. Symptoms

    On 30 January 2017, Google Compute Engine instances, Cloud VPN tunnels and GCE network load balancers that were created or live migrated between 10:36 and 12:42 PDT could not be reached on their public IP addresses. Resources created earlier, and instances that were not live migrated, kept working.

    Trigger

    A large set of updates was applied to a rarely used load balancing configuration on the shared layer 2 load balancers.

    Root cause
    Component
    Contributing factor
    Remediation
    • Restarted the jobs that program changes into the network load balancers, so the stuck changes were processed as a batch
    • Applied the fix zone by zone between 11:36 and 12:42
    Action items
    • Increase the canary timeout so updates that hit the inefficient code path only slow network changes instead of stopping them
    • Improve the inefficient code path
    • Write new tests that check behaviour on a wider range of configurations
    • Accelerate replacing global propagation of address configuration with decentralized routing
    • Add metrics and alerting that identify this kind of issue sooner
Check your cluster for this

These 4 cases involve Cloud load balancer and CDN and edge network. 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