Learn Labs
12. Stream Processing

12.7 Production failure catalog for this chapter

Production failure catalog
0 rows
SymptomUnderlying mechanism
Metrics quietly wrong; nobody noticedUDP/at-most-once delivery; dropped messages aren't visible
Messages processed out of orderLoad balancing + redelivery (§1.4), or cross-partition ordering assumed
One bad message loops forever, blocking the queuePoison message with no DLQ
A new consumer can't see historical dataAMQP/JMS destructive consumption
Consumer falls behind, then silently skips dataRetention expiry past the consumer offset
Search index and database permanently disagreeDual-write race (§3.1)
Half a write succeededDual write partial failure — the atomic commit problem
Source database's disk fills upInactive CDC replication slot pinning WAL
Dropping a column caused a customer-facing outageCDC turned the schema into a public API
Cannot rebuild a derived system without a snapshotNo log compaction on the change topic
Event-sourced log can't be compactedEvents express intent, not final state
GDPR erasure impossibleImmutability + copies everywhere; crypto-shredding not designed in
A traffic "spike" that never happenedWindowing by processing time after a redeploy backlog
Window results wrong after a network blipStraggler events arriving after the window closed
Mobile events arrive days late with wrong timestampsUntrusted device clock; no three-timestamp correction
Job emits nothing; looks healthyWatermark stalled by an idle partition
Checkpoints grow until the job can't progressUnbounded state — no TTL, too-wide join window
Stream job OOMs at high throughputSliding windows / joins buffering events
Reprocessing produces different resultsNondeterministic join across streams (time dependence)
Emails sent twice after a crashSide effect outside the framework — microbatching/checkpointing can't undo it
Counter double-incremented on retryNon-idempotent operation + at-least-once delivery
Zombie processor writes stale stateNo fencing on failover (Ch 9)
Rebalance takes 10 minutesLarge local state restore from the changelog