dbt-labs / dbt-labs/dbt

[Bug] CLI flags do not take precedence over env var DBT_DEFER_STATE

Open
#11,216 5 comments 0 reactions 0 assignees View on GitHub
awaiting_response engine:v1 stale state type:bug
Dominant language
Rust
Stars
13.8k
Forks
2.6k
Avg merge
21h 31m
Merged PRs (30d)
56

Description

### Is this a new bug in dbt-core?

- [x] I believe this is a new bug in dbt-core
- [x] I have searched the existing issues, and I could not find an existing issue for this bug

### Current Behavior

When specifying the env var DBT_DEFER_STATE=stateprod, it appears to be considered even when you try to overrule the state manually using `dbt test --defer --state state` (non-prod)

Do I miss something regarding

### Expected Behavior

Expected to be able to overwrite the state using the flags, as stated in the docs: https://docs.getdbt.com/reference/node-selection/syntax#establishing-state

### Steps To Reproduce

The following example results in `stateprod` being used as state.

Image

When doing the same with DBT_STATE (and unsetting DBT_DEFER_STATE), it works as expected, and the flag gets precedence. i.e. the used state is 'state'

Image

### Relevant log output

```shell
NA
```

### Environment

```markdown
- OS: Windows 11
- Python: 3.10.5
- dbt: 1.8.7
```

### Which database adapter are you using with dbt?

spark

### Additional Context

I noticed that the on-run-end DOES use the expected state (provided via the cli flags) when having DBT_DEFER_STATE set! Causing inconsistent catalogs being referred in my case.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.