Ok so the above fan in attempt didn't work due to ...
# announcements
d
Ok so the above fan in attempt didn't work due to https://github.com/dagster-io/dagster/issues/2679. Is there an alternative approach where I could fan in multiple solids in a pipeline, some of which may be skipped, and then continuing to execute other solids downstream of the fan in?
Copy code
A
   / \
  B   C
   \ /
    D
    |
    E
i.e. D defines the input from C as optional, and if C is skipped then D and E still run?
m
I think you could use a single solid that accepted many inputs (some optional) and then yielded a list types result
d
Tried that and documented why it failed in the issue I linked https://github.com/dagster-io/dagster/issues/2679. The
fan_in
solid accepted many optional inputs and just yielded the first one. Problem was that dagster enforces that as soon as a solid is skipped, anything that takes its outputs downstream is automatically skipped, even if those downstream solids mark those inputs as optional.
@max as a workaround I'm planning to stop using conditional outputs in the pipeline. This way no steps get skipped, and they'll just need to have extra code to detect if they have no work to do and should return immediately. The implementation for this is pretty involved so it would be great to have an official opinion about other alternatives. 🙏
m
yep, that makes sense. the downstream behavior certainly feels like a bug
👍 1