Skip to content
About
Main content
Trade-off

Fail-fast vs. fail-degraded

Reject or continue when something is wrong.

Where you meet it: strict parsing vs. permissive, stop-the-line vs. quarantine, load shedding vs. queueing, circuit break vs. retry.

What it is

Two more points shape every decision here. First, every check is compute inserted into the pipeline's hot path, so check depth trades directly against pipeline latency. Second, every mechanism here is a position on one choice: fail fast (reject the data and stop) or fail degraded (continue, with a warning or with part of the data). Also, the time of binding decides where a defect shows up: if you check at write time, it surfaces in the producer; if you never check until read time, it surfaces in the tenth downstream consumer.

From Data Quality & Validation › Trust boundaries

The mistake almost everyone makes early is to treat fail-degraded as the kinder option. But a degraded system that never recovers is worse than one that rejected 10% of the load and stayed healthy.

From Data Movement › Four answers to overload

What does this system assume that it cannot verify? That the distribution of the data still looks like the data used to choose the level, the block size and the dictionary. Nothing checks this. When a new customer arrives with UUIDs where there used to be a few enum values, the ratio silently halves, and the result shows up months later as storage growth and slower queries, never as an error. Compression fails by degrading, and that is the kind of failure that organizations are worst at detecting. You should alert on compression ratio per column as a data-quality signal. Almost nobody does.

From Encoding, Serialization & Compression › What compression forbids

Where it appears

In 13 mechanisms. Each says what the mechanism is about, then how this trade-off shows up there, in its own words.

Made on the same pages most often.