A company's nightly ETL pipeline uses a task graph with a root task and twelve dependent child tasks. After a recent Snowflake account upgrade, the team notices that some child tasks occasionally start before their upstream dependency tasks have finished, causing data integrity issues. What is the MOST likely cause?
- A. The task graph has more than ten child tasks, which exceeds the Snowflake limit for dependency-based scheduling.
- B. The pipeline was migrated from a user-managed warehouse to a serverless compute model, which does not support task dependency ordering.
- C. Child tasks in a task graph are scheduled independently by default and do not respect dependency ordering unless AFTER clauses are explicitly defined.
- D. The root task's SCHEDULE parameter conflicts with the AFTER clause definitions on the child tasks, causing a race condition.✓ Correct
Explanation
When a root task has both a SCHEDULE and child tasks have AFTER clauses pointing to it, the scheduler can trigger a new run of the root task on schedule even before the previous graph run completes, causing child tasks from successive runs to overlap. The correct fix is to ensure the root task's schedule interval is longer than the expected maximum run time of the full graph, or to use a single root task with no schedule and trigger it externally. Option C is incorrect because AFTER clauses do enforce dependency ordering within a single run. Option B is incorrect because serverless tasks fully support dependency ordering via AFTER clauses. Option A is incorrect because Snowflake task graphs support up to 1,000 tasks, far more than twelve.