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

Cases2 cases

1 to 2 of 2

  1. Symptoms

    A bug report said that some reservation notifications in the AutoReserve restaurant reservation service never arrived. Of the several kinds of notification sent as a reservation progresses, only one kind sometimes arrived and sometimes did not.

    Root cause
    Component
    Contributing factor
    Detection

    A bug report from AutoReserve said that some reservation notifications were not arriving.

    Remediation
    • Scaled the Memorystore for Redis instance from 8 GiB to 16 GiB, which did not stop the write rejections
    • Upgraded Redis from 3.2 to 7.2, which removed the fragmentation and stopped the write rejections
    • Moved the notification sent status from Redis to the relational database
    Action items
    • Consider enabling active defrag if physical memory use rises above 1.3 times logical memory use
    Lessons

    The logs and the instance page metrics did not show the cause; it took looking inside Redis with INFO memory to see physical memory far above logical memory. A cache is a place for values that can be rebuilt if lost and whose writes may fail, so the sent status, which had to persist and be decided once under concurrent processing, belonged in the relational database.

  2. Symptoms

    Reports came in of more WORKER_JOB_ERROR errors, which tell Transloadit there is a communication problem between its Uploaders, the machines that receive files and orchestrate Assemblies, and its Drones, the machines that run encoding tasks. Many Assemblies became much slower because retries with exponential back-off kicked in, and a few could not be replayed.

    Trigger

    A steep increase in HLS traffic, together with more Drones online processing the same volume faster, which put more load on the central Redis nodes.

    Root cause
    Component
    Contributing factor
    Detection

    Reports of an increased number of WORKER_JOB_ERROR errors.

    Remediation
    • Re-added lost messages and relaxed heartbeat monitoring as a stopgap
    • Upgraded Redis to the latest stable version
    • Doubled the Redis cluster to six nodes and then added three more, which made it worse
    • Brought the number of read replicas down to one, which cut traffic and failure rates
    • Capped how far Drones scale up in each region
    Action items
    • Add logging and alarms for approaching saturation
    • Find ways to decentralise the traffic between the Redis nodes and the Drones and Uploaders
    • Add sharding per Uploader on top of the sharding per region
    Lessons

    To handle more traffic Transloadit had to use fewer Redis nodes, not more: each added replica multiplied the replication traffic from the single leader that takes every write, so scaling up the number of nodes was the wrong call. Bandwidth had not been among the monitored Redis metrics.

Check your cluster for this

These 2 cases involve In-memory cache and Database replication. 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