-
Notifications
You must be signed in to change notification settings - Fork 33
Open
Description
When an activity has two conditions, both are evaluated.
However, in Fabric, isn't it the case that only one of the two DependencyConditions of a single activity needs to be met?
Currently, in Fabric, an activity with both skipped and completed conditions works as expected.
Skipped and Completed is necessary if there are sequential Dependencies.
Current function
def are_dependency_condition_met(self, state: PipelineRunState) -> bool:
if not self.depends_on:
return True
for dependency in self.depends_on:
dependency_activity = state.try_get_activity_result_by_name(dependency.activity)
if dependency_activity is None:
return False
for dependency_condition in dependency.dependency_conditions:
if (
dependency_activity["status"] != dependency_condition
and dependency_condition != DependencyCondition.COMPLETED
):
return False
return True
test example
"dependsOn": [
{
"activity": "Example",
"dependencyConditions": [
"Completed",
"Skipped"
]
},
for dependency_condition in dependency.dependency_conditions:
if (
dependency_activity["status"] != dependency_condition
and dependency_condition != DependencyCondition.COMPLETED
):
> assert False, f"Activity {dependency.activity} should have status {dependency_condition}, got {dependency_activity['status']}"
AssertionError: Activity ForEach TablesDailyChanges should have status Skipped, got DependencyCondition.SUCCEEDED
Expected Behavior Function
def are_dependency_condition_met(self, state: PipelineRunState) -> bool:
if not self.depends_on:
return True
for dependency in self.depends_on:
dependency_activity = state.try_get_activity_result_by_name(dependency.activity)
if dependency_activity is None:
return False
for dependency_condition in dependency.dependency_conditions:
if dependency_condition = DependencyCondition.SKIPPED:
return True
if (
dependency_activity["status"] == dependency_condition
or dependency_condition == DependencyCondition.COMPLETED
):
return True
return False
This wil solve the case of multiple conditions. As when one condition is found that is correct it runs
This is under the assumption that I am not missing anything else
Metadata
Metadata
Assignees
Labels
No labels