Incident Library
Applied filters SymptomLock contention or deadlockFactorChange with a delayed effectClear 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

Cases2 cases

1 to 2 of 2

  1. Symptoms

    From 05:45 UTC on 11 May 2023, for about two hours, many Replicate customers got slow responses or HTTP 500 errors from the API and the replicate.com website and had trouble running predictions. Monitoring paged an engineer at 05:46 UTC, a minute after the database connection pool became fully saturated.

    Trigger

    A little after 05:00 UTC on 11 May, normal variations in traffic pushed the stacking INSERT queries past their tipping point.

    Root cause
    Component
    Contributing factor
    Detection

    Monitoring detected the saturated database connection pool almost immediately and paged an engineer at 05:46 UTC.

    Remediation
    • Switched off all asynchronous prediction update features with a feature flag at 07:31 UTC, after which the database recovered
    Action items
    • Keep the asynchronous prediction update feature disabled and redesign it so it no longer sends stacked INSERTs
    • Review lock contention and other database hotspots that could cause similar problems
    • Publish detailed reports after major incidents
    Lessons

    The system ran in a degraded state that looked successful until it tipped into a full failure. The same asynchronous update work that triggered the outage also partly protected customers who used webhooks, and the stacked INSERTs came directly from a latency improvement: removing 100-150ms brought two updates of one prediction to the database almost together.

  2. Symptoms

    At 9:47 AM Eastern (14:47 UTC) on 7 February 2023, Daily's database alerts reported a performance problem under normal operational load: a high level of lock contention on a database that had been upgraded the weekend before and had run normally since Monday. Users could get websocket connection errors when joining calls, and REST API requests could time out or return 5xx errors.

    Trigger

    Database maintenance the weekend before had upgraded the database to a MySQL point release with a low-level behaviour change, and on 7 February, under normal load, that change produced the deadlocks Daily saw on Aurora MySQL 2.11.0.

    Root cause
    Component
    Contributing factor
    Detection

    Database alerts at 9:47 AM Eastern reported a performance issue with high lock contention on the newly upgraded database.

    Remediation
    • Disabled MySQL binlog replication to the old database and restarted the database to reduce load
    • The database restarted by itself at 10:47 AM, the SFUs dropped the stale meeting updates without restarting, and the platform recovered
    • Rate-limited the POST /rooms endpoint to the same limit as DELETE /rooms/:name
    • Updated an index on the affected table in production on the Saturday evening to work around the MySQL behaviour change
    Action items
    • Work with AWS so the Aurora MySQL 2.11.0 deadlock issue is documented, understood and fixed in a future release
    • Add more API request patterns to the testing workload used for infrastructure changes
    • Add production monitoring alarms on more fine-grained database metrics
    Lessons

    Daily tests infrastructure changes under production-like workloads, but its synthetic workload did not have the shape that triggers these deadlocks. A deadlock behaviour change in MySQL 5.7 that was already known turned out far more severe in production than either Daily or the AWS Aurora team expected.

Check your cluster for this

These 2 cases involve 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 cause2