Silent Pipeline Failures: When the Orchestrator Is Green but Data Is Stale
Why Airflow success does not mean fresh data, how freshness checks catch silent failures, and how DataXPipe ties checks to runs and lineage before dashboards break.
- silent-failures
- freshness
- data-quality
- airflow
- observability

Your orchestrator finished successfully. Slack is quiet. Then the CFO asks why yesterday’s revenue number did not move.
This is a silent failure: the pipeline run succeeded, but the data product is wrong or stale. It is one of the most common and expensive problems in analytics engineering — and orchestrator dashboards alone will not catch it.
Why green tasks lie
Batch orchestrators (Airflow, Dagster, Prefect) report success when tasks complete without exception. They do not automatically know whether:
- The upstream extract wrote zero rows because a filter excluded the latest partition
- A transform ran but deduplicated away all new records
- A job wrote to the wrong schema while the mart consumers read the production table
- Replication lag means data is technically present but 36 hours old
Stakeholders consume tables and dashboards, not task logs. Monitoring must attach to dataset freshness and volume, not only task state.
The freshness check pattern
A freshness check answers one question: Is this table recent enough for the business to trust it?
In DataXPipe, declare checks in your pipeline YAML:
checks:
- id: freshness_executive_kpis
type: freshness
target: mart_executive_kpis
max_delay_minutes: 1440
severity: error
After transforms run, the generated check script measures observed delay (for example, hours since MAX(updated_at)) and posts pass/fail to the Catalog API linked to the run ID.
| Signal | Orchestrator only | + Freshness check |
|---|---|---|
| Task exception | Caught | Caught |
| Zero-row load | Missed | Often caught (volume check) |
| Stale partition | Missed | Caught |
| Wrong table written | Missed | Caught if target unchanged |
Severity: warn vs error
Not every delay is a page-worthy incident:
error— consuming the table would mislead decisions (executive KPIs, billing)warn— degraded but interpretable (marketing metrics one hour late)
Reserve error for datasets with hard SLAs. Over-using error creates fatigue when a real silent failure fires.
Lineage when freshness fails
When mart_executive_kpis fails freshness, the next question is why. Lineage edges show upstream tables — for example mart_orders_daily → mart_executive_kpis. Check those upstream targets next instead of re-running the entire DAG blindly.
DataXPipe’s failure explanation workflow combines:
- The failed check payload (threshold vs observed)
- Lineage blast radius (upstream, downstream, dashboards at risk)
- Recommended verification steps
That turns a vague “dashboard looks wrong” into a structured incident checklist.
Practical rollout (one week)
Day 1: List the 5 tables behind dashboards executives open weekly.
Day 2: Add freshness checks with SLAs agreed with stakeholders (24h for daily marts is common).
Day 3: Register the pipeline spec in DataXPipe and confirm check results appear on the Runs page.
Day 4: Run the Get started demo to see failure explanation on a stale-table scenario.
Day 5: Document escalation: who owns each mart, which upstream job to inspect first.
Common mistakes
Checking only raw ingest. Raw can be fresh while marts are stale if transforms failed silently or filtered everything out.
Using cron success as proxy. A DAG can run on schedule and still produce empty partitions.
No ownership on checks. Every check should map to an owner in the pipeline spec so alerts route correctly as you add Slack or email integrations.
How DataXPipe fits
- Declarative checks in YAML, generated test harnesses, results in the catalog
- App UI for pipelines, runs, and registration with plan-aware limits
- Guided demo for stale-table → explain flow without warehouse setup
Related reading
- DataXPipe use cases guide
- Freshness checks on BigQuery marts
- A practical guide to data quality checks
- All use cases
Start free at app.dataxpipe.com — register two pipelines on the free tier and add freshness to your most critical mart first.