Skip to content

fix(transform): count computed-column failures - #334

Merged
catinspace-au merged 1 commit into
mainfrom
fix/computed-metric
Nov 12, 2026
Merged

catinspace-au merged 1 commit into
mainfrom
fix/computed-metric

Conversation

@catinspace-au

@catinspace-au catinspace-au commented Nov 12, 2026 •

Copy link
Copy Markdown
Contributor

A failed CEL expression dropped the computed column without a metric or log, making it indistinguishable from an unfilled column.

  • Count computed-column failures with dfe_loader_computed_eval_failures_total{table, column, stage}. The stage is compile, context or eval. The counter is registered in the manifest beside the other loader counters.
  • Each table and column pair logs its first runtime failure once per process, across rebuilds, with the error. Later failures cost a counter increment and an atomic load.
  • Every loader-owned metric name comes from metrics::names, which applies the dfe_loader_ or loader_ prefix in one macro. No emitted name changes.
  • The unused Metrics::record_max_dynamic_paths_exceeded is gone. The inserter emits that counter itself.
  • The older dual-emitted names stay. The engine's dashboards read buffer_rows, batches_flushed_total, insert_latency_seconds and loader_messages_by_table_total.

dfe-infra's argocd, helm and docs trees reference none of these metric names.

The evaluate tests use one test table, with each runtime table on its own thread. Rows cover a missing field (6 failures over 2 rebuilds, 1 log line) and an invalid expression (counted per compile). Another row covers two tables failing on one column at once (2 log lines, 2 series).

Done when CI's Quality and Test jobs pass.

A failed CEL expression silently skipped its computed column. Each failure now counts in dfe_loader_computed_eval_failures_total, by table, column and stage (compile, context or eval). Each table and column pair logs its first runtime error once per process, across rebuilds.

Further failures for a field missing from every message cost a counter increment and an atomic load. They produce no log line.

Every loader-owned metric name now comes from metrics::names, which applies the dfe_loader_ or loader_ prefix in one macro. No emitted name changes. The unused Metrics::record_max_dynamic_paths_exceeded is gone, because the inserter emits that counter itself.

Metrics still emit both names because the engine's dashboards read buffer_rows, batches_flushed_total, insert_latency_seconds and loader_messages_by_table_total.
@catinspace-au
catinspace-au merged commit 1b98ed7 into main Nov 12, 2026
24 checks passed
@catinspace-au
catinspace-au deleted the fix/computed-metric branch November 12, 2026 07:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant