Fix DAG cycle detection (#3049)

Previously a graph like this.

    a <- b
    ^    ^
    |    |
    c <- d

Was incorrectly recognized as having a cycle.

Fixes #3048.
This commit is contained in:
Kamila Borowska 2023-12-28 00:14:28 +01:00 committed by GitHub
parent 74f6824d03
commit 4bc2fed550
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 22 additions and 0 deletions

View file

@ -102,6 +102,8 @@ func dfsVisit(steps map[string]*dagCompilerStep, name string, visited map[string
}
}
delete(visited, name)
return nil
}

View file

@ -51,6 +51,26 @@ func TestConvertDAGToStages(t *testing.T) {
_, err = convertDAGToStages(steps, "")
assert.NoError(t, err)
steps = map[string]*dagCompilerStep{
"a": {
step: &backend_types.Step{},
},
"b": {
step: &backend_types.Step{},
dependsOn: []string{"a"},
},
"c": {
step: &backend_types.Step{},
dependsOn: []string{"a"},
},
"d": {
step: &backend_types.Step{},
dependsOn: []string{"b", "c"},
},
}
_, err = convertDAGToStages(steps, "")
assert.NoError(t, err)
steps = map[string]*dagCompilerStep{
"step1": {
step: &backend_types.Step{},