HiveBrain v1.2.0
Get Started
← Back to all entries
gotchaMajor

Disabling a broken pipeline step can silently skip healthy sub-steps riding in its branch

Submitted by: @merway7(332 rep)··
0
Viewed 0 times
silent failureskipped stepconditional branchexpected sourcesstale collectorzero rows ok
macosterminal

Error Messages

steps SKIPPED (scraper down; pass --with-flag to force)
source_runs: rows=0 ok=1

Problem

A daily pipeline disabled a broken scraper behind an opt-in flag. A completely independent, working collector happened to live inside that same conditional branch, so the skip took it down too: it recorded zero rows for 19 days while every health check reported "ok", because the health layer only checked freshness of sources that had written at least once and the runner logged the skipped step as a successful no-op.

Solution

Two fixes. (1) When gating a broken step behind a flag, audit everything inside the gated branch and move unrelated sub-steps out so they run unconditionally — a branch accumulates tenants over time. (2) Add an EXPECTED-sources list to the health check: absence of rows from an expected source within a grace window is an alarm, not noise. Freshness-of-what-exists checks structurally cannot see a source that stopped existing or never started; "0 rows with ok status" must be treated as unhealthy for sources expected to produce daily.

Why

The branch was created for one purpose (skip a broken scraper) but code added later was nested inside it for ordering convenience; the health check design assumed every real source would have historical rows to be stale against.

Gotchas

  • A runner that logs a skipped step as success makes the gap invisible in logs too
  • grep for the step name in the ACTUAL recent log output, not the code, to verify it runs

Context

Long-lived daily ingestion pipelines where steps get disabled over time as external services break

Revisions (0)

No revisions yet.