dbt-labs / dbt-rpc

A server that can compile and run queries in the context of a dbt project. Additionally, it provides methods that can be used to list and terminate running processes.
https://docs.getdbt.com/reference/commands/rpc
Apache License 2.0
19 stars 7 forks source link

dbt crasher attempting to call Jinja with {{ env_var('foo') }} in dbt Cloud #68

Closed barberscott closed 2 years ago

barberscott commented 2 years ago

Enter the following in dbt Cloud in a Statement window against a BigQuery project:

{% if env_var('DBT_FOO','foo') != 'foo' %}
select 1
{% endif %}

Error is returned:

Server error: 'my_new_project://from remote system'

Crash traceback:

uncaught python exception
Traceback (most recent call last):
File "/usr/local/lib/python3.8/dist-packages/dbt_rpc/rpc/task_handler.py", line 102, in task_exec
result = self.task.handle_request()
File "/usr/local/lib/python3.8/dist-packages/dbt_rpc/task/sql_commands.py", line 164, in handle_request
node = self._get_exec_node()
File "/usr/local/lib/python3.8/dist-packages/dbt_rpc/task/sql_commands.py", line 124, in _get_exec_node
rpc_node = rpc_parser.parse_remote(sql, self.args.name)
File "/usr/local/lib/python3.8/dist-packages/dbt_rpc/parser/rpc.py", line 47, in parse_remote
return self.parse_node(contents)
File "/usr/local/lib/python3.8/dist-packages/dbt/parser/base.py", line 401, in parse_node
self.render_update(node, config)
File "/usr/local/lib/python3.8/dist-packages/dbt/parser/base.py", line 376, in render_update
context = self.render_with_context(node, config)
File "/usr/local/lib/python3.8/dist-packages/dbt/parser/base.py", line 267, in render_with_context
get_rendered(
File "/usr/local/lib/python3.8/dist-packages/dbt/clients/jinja.py", line 597, in get_rendered
return render_template(template, ctx, node)
File "/usr/local/lib/python3.8/dist-packages/dbt/clients/jinja.py", line 548, in render_template
return template.render(ctx)
File "/usr/local/lib/python3.8/dist-packages/jinja2/environment.py", line 1090, in render
self.environment.handle_exception()
File "/usr/local/lib/python3.8/dist-packages/jinja2/environment.py", line 832, in handle_exception
reraise(*rewrite_traceback_stack(source=source))
File "/usr/local/lib/python3.8/dist-packages/jinja2/_compat.py", line 28, in reraise
raise value.with_traceback(tb)
File "<template>", line 1, in top-level template code
File "/usr/local/lib/python3.8/dist-packages/jinja2/sandbox.py", line 462, in call
return __context.call(__obj, *args, **kwargs)
File "/usr/local/lib/python3.8/dist-packages/dbt/context/providers.py", line 1189, in env_var
source_file = self.manifest.files[self.model.file_id]
KeyError: 'my_new_project://from remote system'
barberscott commented 2 years ago

This appears to have already been fixed in v1.0.1!