Hey guys, a potential regression we noticed when w...
# ask-community
a
Hey guys, a potential regression we noticed when we upgraded from version 0.13.9 to 0.15.2 The out parameters of the op are defined as regular Outputs and not dynamic outputs, however Dagster check fails if the output is an empty list.
Copy code
from dagster import graph, op, Out, List, Dict


@op(
    out={
        "output_1": Out(List[Dict]),
        "output_2": Out(List[Dict]),
    }
)
def dummy_op():
    output_1 = [{"dummy_key1": "dummy_value1"}, {"dummy_key2": "dummy_value2"}]
    output_2 = []
    return (output_1, output_2)


@graph
def dummy_graph():
    dummy_op()


job = dummy_graph.to_job(name="dummy_job")
This job fails to run with the following error:
Copy code
dagster.core.errors.DagsterInvariantViolationError: Received a list of DynamicOutputs for output named 'output_2', but output is not dynamic.

  File "/usr/local/lib/python3.9/site-packages/dagster/core/execution/plan/execute_plan.py", line 224, in dagster_event_sequence_for_step
    for step_event in check.generator(step_events):
  File "/usr/local/lib/python3.9/site-packages/dagster/core/execution/plan/execute_step.py", line 353, in core_dagster_event_sequence_for_step
    for user_event in check.generator(
  File "/usr/local/lib/python3.9/site-packages/dagster/core/execution/plan/execute_step.py", line 69, in _step_output_error_checked_user_event_sequence
    for user_event in user_event_sequence:
  File "/usr/local/lib/python3.9/site-packages/dagster/core/execution/plan/compute.py", line 174, in execute_core_compute
    for step_output in _yield_compute_results(step_context, inputs, compute_fn):
  File "/usr/local/lib/python3.9/site-packages/dagster/core/execution/plan/compute.py", line 142, in _yield_compute_results
    for event in iterate_with_context(
  File "/usr/local/lib/python3.9/site-packages/dagster/utils/__init__.py", line 406, in iterate_with_context
    next_output = next(iterator)
  File "/usr/local/lib/python3.9/site-packages/dagster/core/execution/plan/compute_generator.py", line 67, in _coerce_solid_compute_fn_to_iterator
    for event in _validate_and_coerce_solid_result_to_iterator(result, context, output_defs):
  File "/usr/local/lib/python3.9/site-packages/dagster/core/execution/plan/compute_generator.py", line 147, in _validate_and_coerce_solid_result_to_iterator
    raise DagsterInvariantViolationError(
The change was introduced as a part of this PR. Not sure if this is the intended behaviour, but we’ve fixed it at our end
p
Thanks! We’ll take a look (cc @chris)
a
Love the description! It is indeed brutal 😬