Learn Labs
5. Encoding and Evolution

5.9 Production failure catalog for this chapter

Production failure catalog
0 rows
SymptomUnderlying mechanism
A field silently disappears after an editUnknown-field loss during a rolling upgrade (§0)
Large IDs are wrong by a few digits in the browser2⁵³ — JSON number parsed as an IEEE 754 double
RCE from a "harmless" data endpointDeserializing a language-native format from untrusted input
Decoding produces garbage after a schema changeReused Protobuf tag number
Big values truncated after widening a typeOld code still holding a 32-bit variable
"Set to zero" indistinguishable from "not set"proto3 default-value ambiguity
Every consumer breaks at once after a producer deployAdded an Avro field without a default
Nothing can decode after a registry outageSchema registry is on every consumer's critical path and unbacked-up
Old readers break after a field renameRename is backward but not forward compatible in Avro
gRPC traffic all lands on one backendHTTP/2 multiplexing vs an L4 load balancer
Server burns CPU on abandoned requestsDeadline not propagated
Duplicate side effects after a retryTimeout gave no information; no idempotence in the protocol
Deprecated API version can never be removedNo per-version usage instrumentation; no control over clients
Fields dropped as messages pass through a pipelineConsumer republished after decoding into an old model
Workflow throws NonDeterministicError after a deployReordered or added activity calls, breaking replay
Payment charged twiceThird party not idempotent, no idempotency key
Clients see stale IPs after a failoverDNS caching used for a dynamic service population