dbt-costgate v1.0.1
Fixed
-
--selectno longer throws away the whole report because one name cannot be
priced. Naming a seed, a snapshot or an ephemeral model alongside real models
used to end the run at exit 2 with nothing printed — even when sixteen other
models had answers. That is reachable from an ordinary CI line, because
dbt ls --select state:modified --resource-type modelincludes ephemerals.Those names are now reported on stderr and the run carries on, which is what
the change-detection path has always done:dbt-costgate: int_names_00 was selected but is not priced — ephemeral models have no relation of their own; their SQL is inlined into the models that select from them, and the cost shows up there.Two things deliberately did not change. A
--selectnaming only unpriced
nodes is still exit 2 — nothing was gated, and that has to stay loud. A name
nobody recognises is still exit 2 with a spelling suggestion, so a stale list
cannot quietly check nothing. -
A BigQuery outage no longer hangs your CI job for up to forty minutes per
model.deadline_seconds(default 60) was bounding nothing.Client.query
takes two independent retries and dbt-costgate set only one, leaving
job_retryat its 2400-second default to re-drive the whole thing underneath.
Measured against real BigQuery, a 5-second deadline ran for 179 seconds over
42 attempts. It now gives up inside the deadline — the same case takes 2.1
seconds. -
A dry-run that BigQuery could not serve now says so. When the retries run
out, the client raises aRetryErrorwrapping the real failure, which fell
through every check and was reported asthe dry-run failed. You now get the
message that was always meant for this:not estimated — BigQuery was unavailable and the retries ran outThis affects the reported reason only. That kind was already treated as an
operational failure, so no exit code or verdict changes.