Question about AutomationCondition.eager() conditions #24622
-
Hey! Using dagster version 1.8.5 This is the default eager AutomationCondition def eager() -> "AutomationCondition":
with disable_dagster_warnings():
return (
AutomationCondition.in_latest_time_window()
& (
AutomationCondition.newly_missing() | AutomationCondition.any_deps_updated()
).since_last_handled()
& ~AutomationCondition.any_deps_missing()
& ~AutomationCondition.any_deps_in_progress()
& ~AutomationCondition.in_progress()
).with_label("eager") I have a question about this condition specifically (
AutomationCondition.newly_missing() | AutomationCondition.any_deps_updated()
).since_last_handled()
I guess there's some kind of an edge case but I can't figure it out. It would be great if you could provide me some context. |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 3 replies
-
Hi @ssillaots-boku ! Good question, and the reason is indeed a bit of an edge case. For simplicity, imagine you just have a single unpartitioned asset that has never been materialized, and has some error in its definition that will cause it to fail whenever the system attempts to materialize it. In this case, the The |
Beta Was this translation helpful? Give feedback.
Hi @ssillaots-boku ! Good question, and the reason is indeed a bit of an edge case.
For simplicity, imagine you just have a single unpartitioned asset that has never been materialized, and has some error in its definition that will cause it to fail whenever the system attempts to materialize it.
In this case, the
eager()
condition would become true, and a run would be launched. While that run is going, no further work would be launched (as the asset would still be in progress). However, that run will eventually terminate with an error, at which point, the asset will still be missing, and no longer be in progress. This would cause another run to be kicked off, resulting in an "infinite loo…