Case Study: Coinbase multi-hour service disruption — 2026-05-07
Source: Rob Witoff / Coinbase engineering initial read on X
- X post: https://x.com/rwitoff/status/2052863502424133949
- Fallback metadata/API source used locally: https://api.fxtwitter.com/status/2052863502424133949
- Posted: 2026-05-08
- Incident time: approximately 23:50 UTC on 2026-05-07
What happened, in plain English
Coinbase experienced a multi-hour service disruption affecting trading, exchange access, and balance updates. Monitoring detected cascading quote failures from internal services and multiple Sev1 incidents were triggered.
Customer-facing impact included:
- Spot trading
- Coinbase Prime
- International exchange
- Derivatives exchange
- Balance stream delays
The reported root cause was a thermal event — a cooling system failure — affecting a subset of racks inside a single AWS us-east-1 building.
Coinbase said their exchange infrastructure runs a primary replica in a single zone, consistent with industry standards to reduce latency. They also maintain a distributed standby. During this incident, failures in the primary zone that were designed to be isolated were not isolated, extending outage duration.
Main technical themes to incorporate into lessons
This case study should become a recurring concrete example across multiple learning tracks.
1. Single-zone primary systems and latency tradeoffs
Coinbase stated that the primary replica of exchange infrastructure runs in a single zone to reduce latency.
Teaching angle:
- Low-latency trading systems often avoid multi-zone coordination on the hot path because cross-zone communication adds latency and can complicate ordering.
- This is a classic tradeoff: lower latency during normal operation vs harder failover during rare infrastructure failures.
- Relate to CAP-style tradeoffs, quorum systems, active/standby, and disaster recovery.
Use in lessons:
- Track 0: latency vs availability
- Track 4: matching engines and exchange architecture
- Track 6: active-active vs active-passive multi-region/zone design
2. Failure isolation did not hold
The post says failures in the primary zone were designed to be isolated but were not, extending the outage.
Teaching angle:
- Isolation boundaries are only real if dependencies, automation, and operational procedures respect them.
- A “single building” or “subset of racks” failure can still cascade if shared dependencies are coupled.
- Explain blast radius, fault domains, cell-based architecture, dependency mapping, and bulkheads.
Use in lessons:
- Track 6: bulkheads and circuit breakers
- Track 2: observability and dependency graphs
- Track 1: Kubernetes node/zone draining and workload placement
3. Kubernetes was drainable; exchange and Kafka were not
Coinbase said automated tooling drained about 10 Kubernetes clusters worth of related workloads out of the affected zone. Most services were back to normal within about 30 minutes of diagnosis.
The two things they could not automatically drain were:
- The exchange, because of dedicated hardware and storage
- Kafka, because the managed service had unique problems despite being designed for resilience
Teaching angle:
- Stateless or mostly stateless Kubernetes workloads are often easier to reschedule than specialized stateful systems.
- Kubernetes helps when apps are portable and have health checks, replicas, and clean shutdown behavior.
- Stateful systems with local storage, quorum, or huge data volumes need more careful recovery.
Use in lessons:
- Track 1: pods, deployments, services, resource scheduling, health checks, draining, stateful sets
- Track 3: Kafka brokers, partitions, replication, recovery, terabytes of data
- Track 6: disaster recovery runbooks and automation limits
4. Matching engine quorum failure blocked trading
The exchange matching engine processes orders and maintains order books. It is a distributed cluster that requires quorum to safely elect a leader and continue processing trading.
During the incident, only a subset of nodes remained healthy, so the cluster could not reach quorum. Trading across Retail, Advanced, and Institutional exchanges was blocked.
Teaching angle:
- Quorum protects correctness: better to stop trading than process orders with split-brain or inconsistent order books.
- Explain leader election, quorum, split-brain, safety vs availability, and why financial systems may prefer halting over unsafe operation.
- Tie directly to prediction markets and trading systems.
Use in lessons:
- Track 0: consistency basics
- Track 4: matching engines, sequencing, fairness, and market halts
- Track 6: incident response and failover
5. Kafka partition failover at multi-terabyte scale
Coinbase said distributed Kafka clusters managing messaging across systems failed to remain available and required partition failovers to new hardware brokers with many TiBs of data.
Kafka recovery required disaster recovery procedures to move stuck partitions onto new brokers. Balance streams were delayed until replication caught up. Coinbase stated no data was lost.
Teaching angle:
- Kafka is not just a queue; it is a replicated distributed log with partitions stored on brokers.
- Partitions, replicas, leaders, ISR, consumer lag, and broker recovery matter in incidents.
- Moving terabytes of data takes time; recovery is constrained by disk/network throughput, replication state, and correctness checks.
- “No data lost but delayed streams” is a useful distinction between durability and freshness.
Use in lessons:
- Track 3: topics, partitions, offsets, brokers, retention, replay, consumer lag, disaster recovery
- Track 2: monitoring Kafka lag and balance-stream delays
- Track 4: balance updates and eventual consistency
6. Reopening markets carefully
After recovery, Coinbase reopened markets in phases:
- Cancel-only mode
- Audit product states
- Auction mode
- Restore normal trading on Coinbase Exchange
Teaching angle:
- Recovery is not simply “turn it back on.” Financial systems need safe restart phases.
- Cancel-only mode lets users reduce risk without allowing new aggressive trading.
- Auction mode can help re-establish fair prices after a halt.
- Auditing product state prevents reopening with stale, inconsistent, or unsafe state.
Use in lessons:
- Track 4: market halts, circuit breakers, safe reopen procedures
- Track 6: runbooks, validation, progressive recovery
- Track 2: health checks, dashboards, incident criteria
7. Observability and incident response
Monitoring detected cascading quote failures. Multiple Sev1s were opened. Engineering executed disaster recovery plans, used runbooks, secure automation tooling, and planned a full RCA.
Teaching angle:
- Observability starts with detecting symptoms customers care about: quote failures, trading blocked, balance stream lag.
- Severity levels coordinate response.
- Runbooks and rehearsed playbooks matter before incidents happen.
- Postmortems/RCA turn incidents into learning.
Use in lessons:
- Track 2: monitoring vs observability, Datadog monitors, alerting, SLOs, incident response, postmortems
- Track 6: reliability engineering and disaster recovery
Concepts to add or emphasize in the curriculum
- Thermal event / datacenter-level physical failure
- Fault domain: rack, building, availability zone, region
- Blast radius
- Cascading failure
- Sev1 incident
- Quote service failure
- Kubernetes cluster draining
- Dedicated hardware and storage
- Stateful vs stateless workloads
- Matching engine
- Order book
- Quorum
- Leader election
- Split-brain
- Kafka broker
- Kafka partition
- Partition failover
- TiB-scale recovery
- Replication catch-up
- Delayed balance streams
- Durability vs freshness
- Cancel-only mode
- Auction mode
- Product state audit
- Disaster recovery runbook
- Root cause analysis / RCA
Suggested lesson inserts
Add dedicated case-study lessons after foundational concepts:
- After Track 0 Lesson 2: “Case study preview: why Coinbase chose latency tradeoffs for exchange infrastructure.”
- After Track 1 Lesson 11: “Kubernetes case study: why draining 10 clusters worked for many services but not the exchange or Kafka.”
- After Track 2 Lesson 9: “Observability case study: detecting quote failures, Sev1s, dashboards, and incident response.”
- After Track 3 Lesson 6 or 12: “Kafka case study: broker/partition failover, TiBs of data, consumer lag, and delayed balance streams.”
- After Track 4 Lesson 2: “Matching engine case study: quorum failure, safe halting, cancel-only mode, auction reopen.”
- After Track 6 Lesson 8: “Disaster recovery case study: single-zone primary, distributed standby, and failure isolation gaps.”
Original post text captured for local reference
Yesterday @coinbase experienced a multi-hour service disruption affecting trading, exchange access, and balance updates. Here's our initial read from Coinbase engineering on what happened, how we recovered, and what we're addressing.
At approximately 23:50 UTC on 2026-05-07, our monitoring detected cascading quote failures from internal services that triggered multiple Sev1 incidents that engineering immediately began investigating. Customer-facing impacts included spot trading, Prime, International and derivative exchanges.
Root cause: a thermal event (cooling system failure) inside a subset of racks within a single building in AWS us-east-1. We run a primary replica of our exchange infrastructure in a single zone, consistent with industry standards to reduce latency. To prepare for failures like this, we maintain a distributed standby, but during this incident, failures in the primary zone that were designed to be isolated were not, extending the duration of our outage.
The failure cascaded down two paths:
1. Multiple hardware components beneath our exchange’s matching engine failed, requiring recovery and failover
2. Distributed Kafka clusters that manage messaging across Coinbase systems failed to remain available, also requiring partition failovers to new hardware brokers with many TiBs of data
After isolating the incident: automated tooling drained ~10 Kubernetes clusters worth of related workloads out of the affected zone to stabilize internal services. Most services were back to normal within ~30 minutes of diagnosis. The two things we couldn't automatically drain: the exchange (dedicated hardware and storage) and Kafka (managed service that was designed to be resilient to this, with unique problems).
The exchange matching engine is the core system responsible for processing orders and maintaining order books. It is a distributed cluster and requires quorum to safely elect a leader and continue processing trading activity. During the incident, infrastructure-level constraints in the affected datacenter left only a subset of nodes healthy, preventing the cluster from reaching quorum. As a result, trading across Retail, Advanced, and Institutional exchanges were blocked.
Recovery required our oncall and engineering teams to execute our disaster recovery plan, restore quorum safely, and validate system health under constrained infrastructure conditions. The team built, tested, deployed, and validated the fix while continuing to manage the broader incident.
Kafka recovery was a much larger scale operation. Our primary managed Kafka partitions process many terabytes of data daily and are designed with resiliency guarantees for uninterrupted operation during a datacenter failure just like this. In this case, those guarantees failed and required manual recovery.
We again relied on disaster recovery procedures to recover stuck partitions onto new hardware (brokers) that enabled us to safely bring x-service messaging back online across Coinbase. During the lag, customers saw delayed balance streams which resolved automatically once replication caught up. No data lost.
Once the engine came back up as part of our standard runbooks, we re-opened markets carefully: all products to cancel-only mode first, audited product states, then moved all markets to auction mode, before restoring trading on Coinbase Exchange.
What went right: the team. Incident response across the company came together within minutes, followed well-rehearsed playbooks and used secure automation tooling to recover all services. We have a strong, senior team at Coinbase that worked through rare failure modes to recover all services.
To our customers: losing access to your account, even temporarily, is unacceptable. We know that. We're sorry, and we’ll publish a full root cause analysis in the coming weeks 🙏