Incident Library
Applied filters ComponentMessage brokerSymptomMonitoring outageOrganisationHoneycombClear 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

Cases1 case

1 to 1 of 1

  1. Symptoms

    On 5 December, during the cleanup after a zonal failover exercise in production, Honeycomb destroyed Kafka brokers on purpose as a runbook step, and several topic partitions lost every broker that held them and became fully leaderless. Any Honeycomb team or environment whose assigned partitions were all unavailable could no longer have its data ingested.

    Trigger

    During the cleanup that rebalances workloads after a successful zonal failover exercise, Honeycomb followed its runbook and destroyed Kafka brokers on purpose. Older, in-sync brokers were killed by accident, so some topic partitions lost every broker that held them.

    Root cause
    Component
    Contributing factor
    Detection

    Responders noticed through the alerting noise that the ingest service Shepherd had gone into a crash loop more than an hour earlier. On Saturday morning they saw that the Kafka balancing jobs were not progressing and disk usage had not improved, and once the metadata topics were repaired, SLO processing triggers fired about ~18h of late data.

    Remediation
    • Marked the impacted partitions read-only on the producer side, which stopped Shepherd's crash loop
    • Ran partition reassignments to bring customers back to normal
    • Turned off the Kafka autobalancer and left a manual reassignment plan running overnight
    • Reduced local retention on Kafka to rely on S3 tiered storage for longer retention
    • Repaired the broken _confluent-tier-state and __consumer_offsets partitions, which unblocked SLO processing
    • Turned off ingest to stop the brokers from running out of disk
    • Turned off tiered storage, which freed the broker disk space at once
    • Reopened ingest, which ended the customer impact
    • Truncated the fully damaged Retriever partitions and left them read-only
    • Extended the binlog retention of the MySQL read-only replica because Activity Log could not publish to Kafka
    • Patched Retriever so its nodes could idle live and serve old data despite broken offsets
    • Made a one-time offset reset work in Retriever
    • Evacuated to a new Kafka cluster with new topics and partitions
    • Booted an Activity Log database instance from 9 December and replicated from it to limit data loss
    • Cleaned up the older Kafka clusters
    Action items
    • Consolidate internal documentation better as the company grows
    Lessons

    Many elements of this outage were already known: similar outages, workaround plans, RFCs, migrations and procedures for running such exercises safely existed, but the documents were unknown outside their authors or hard to find. Flexible, locally controlled work is easy to defer again and again in favour of urgent work, and Honeycomb wants to notice when deferring becomes a reflex. Many key interventions came from people who no longer owned the components, which shows drift between team boundaries and the coupling inside the system. The pre-production clusters were too small to reproduce the flaw, and tests on a cluster closer to production would have made catching it much more likely. Coordination and public communication were also hard: senior engineers tended to take the lead automatically, and customers said the updates gave too much detail about minor beta features.

Check your cluster for this

This case involves Message broker. 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