Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
2 tasks done
Siete-F opened this issue Jan 16, 2025 · 2 comments
Open
2 tasks done

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

Siete-F opened this issue Jan 16, 2025 · 2 comments
Labels
bug Something isn't working triage

Comments

@Siete-F
Copy link

Siete-F commented Jan 16, 2025

Is this a new bug in dbt-core?

  • I believe this is a new bug in dbt-core
  • 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

NA

Environment

- 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.

@Siete-F Siete-F added bug Something isn't working triage labels Jan 16, 2025
@dbeatty10
Copy link
Contributor

Thanks for reaching out @Siete-F !

Did you try the --defer-state flag? That's the one that overrides the DBT_DEFER_STATE environment variable:

Image

More info / examples in the docs here and here.

@Siete-F
Copy link
Author

Siete-F commented Jan 20, 2025

Hi @dbeatty10 ,
Thanks for your reply!
no, I didn't but I did expect the --defer and --state to overwrite also --defer-state when it has been set. It felt like one of those options was probably legacy, but maybe I am mistaken?

The second doc's link you shared I didn't check yet, so thanks for sharing! State seems to be used in two different contexts of which I am unfamiliar with the state:modified+ select syntax. But I dont understand (from a short read) from the docs how --defer-state differs from the combination --defer and --state, so that's why I would expect the latter two (as cli commands) to also overwrite the former as an env var.

As a sidenote, the behavior that I am sure is undesired is that the on-run-end uses one state while the dbt call uses another. See the last sentence of the bug report.

(have to go)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working triage
Projects
None yet
Development

No branches or pull requests

2 participants