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

Cases3 cases

1 to 3 of 3

  1. Symptoms

    From 9 February 2026, InfluxDB Cloud customers on the AWS us-east-1 cluster prod101-us-east-1 found that some recent data did not show up in query responses. The first support ticket about data availability came in on 9 February, the day a compaction change was deployed, and more tickets followed on 10 February.

    Trigger

    On 9 February 2026 InfluxData deployed to prod101-us-east-1 a compaction change that runs several compaction jobs in parallel on one partition, each on a subset of the data chosen by org id prefix.

    Root cause
    Component
    Contributing factor
    Detection

    Tickets about data availability were raised, the first on 9 February and more on 10 February, when the status page reported that some recent data was not showing up in query responses.

    Remediation
    • Rolled back the compaction change
    • Restored recent data first, rebuilt from the Kafka logs
    • Changed the restoration process to make historical data recovery more efficient
    • Restored historical data from the weekly TSM snapshots
    • Kept the cluster online and restored data incrementally so ingest and queries could continue
    Action items
    • Expand test coverage for changes to critical storage components such as the compactor, with scenarios closer to production-scale workloads
    • Strengthen safeguards around compaction so failures are detected and handled safely
    • Review restoration workflows and procedures to reduce elevated TTBR and slow queries during large restores
    • Revisit the backup and restore strategy to speed up cluster-wide restorations
  2. Symptoms

    Between about 15:30 and 18:00 UTC on 25 November 2025 some AdGuard DNS users saw slow or failed DNS resolution, with timeouts and SERVFAIL responses. Alerts fired for increased DNS error rates and server load, and a significant part of the traffic in several European locations, primarily Amsterdam, Frankfurt and London, had intermittent DNS failures for up to 2.5 hours.

    Trigger

    A new version of AdGuard DNS, deployed on 25 November to improve how resolvers cache user data, had a bug that saved only the recently changed subset of user data into the local cache file. The first deployment failed partway on a network issue and left about half the servers on the new version; the second attempt made many resolvers start full synchronizations at once.

    Root cause
    Component
    Contributing factor
    Detection

    Alerts for increased DNS error rates and server load fired during the second deployment attempt, between 15:30 and 16:00 UTC.

    Remediation
    • Rolled back the buggy version on all servers
    • Partially rerouted Amsterdam's traffic to other European locations
    • Reduced connection concurrency and request pipeline depth in Frankfurt and London, from 5 to 1 in Frankfurt
    • Adjusted limits to the actual hardware capacity
    • Repaired corrupted cache files and user data snapshots to stop further full synchronizations
    • Normalised the traffic distribution once the rollback was complete
    Action items
    • Add automated tests that the full user dataset is correctly written to and restored from the local cache file, including detection of empty or truncated caches
    • Add integration tests that simulate resolver startup with an empty or corrupted cache under realistic load
    • Standardize server hardware profiles per location, or keep separate configurations per hardware class
    • Review and adjust connlimit, cache sizes and connection limits for each standard node type
    • Reevaluate and lower pipelining depth where needed
    • Reevaluate how connections and goroutines are limited so resource use stays bounded with decent throughput after a connection break
    • Monitor Go heap size, GC time, GC cycles per second and per-cluster request latency distributions
    • Alert on sustained increases in SERVFAIL rate and request duration while upstreams are healthy
    • Refine DNS resolver deployment and rollback procedures to avoid simultaneous cache invalidation across a large part of the fleet
    • Document and rehearse playbooks for adjusting pipeline depth, connection limits and connlimit during live incidents
    Lessons

    How nodes behaved depended on the interaction between available RAM, Go's garbage collector and the connlimit setting. On 64-GiB nodes a high limit let the heap grow large under heavy concurrency and pipelining, and the garbage collector then spent more and more CPU, a known worst case for high-memory applications in which memory is not exhausted but latency rises and throughput falls. On 32-GiB nodes the same configuration reached practical memory limits sooner because it had not been scaled down. Together with high pipelining and client retries, GC pressure, connection saturation and retries formed a feedback loop.

  3. Symptoms

    From about 18:50 to 19:43 UTC on Monday, November 8, 2021, CircleCI customer jobs on all executors were blocked in a "not running" state. Errors and alerts appeared right after a deploy that changed a field type in the database of the job distribution service.

    Trigger

    At 18:50 UTC a deploy changed the type of a field in the PostgreSQL database of the job distribution service, in a way that was not backwards compatible.

    Root cause
    Component
    Contributing factor
    Detection

    Errors and alerts related to the distribution failure appeared immediately after the 18:50 UTC deploy.

    Remediation
    • Rolled back the field type change, which did not clear the errors
    • Wrote, built and manually deployed a change that made the distribution system ignore the field
    • Manually scaled the primary compute cluster for the expected thundering herd of work
    • Monitored until processing was normal and resolved the incident
    Action items
    • Fix the gaps found in the testing strategy
    • Change how the distributor reacts to unexpected data so that this kind of deploy should not affect all jobs
    • Make recovery faster when unforeseen failures occur
Check your cluster for this

These 3 cases involve Database and Database backups and snapshots. 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