Share analysis dependent staling traversal
This commit is contained in:
@@ -345,27 +345,7 @@ func staleAnalyzeDependents(
|
|||||||
changed string,
|
changed string,
|
||||||
records map[string]manifest.AnalyzeArtifactRecord,
|
records map[string]manifest.AnalyzeArtifactRecord,
|
||||||
) {
|
) {
|
||||||
reverse := make(map[string][]string, len(configured))
|
staleAnalyzeDependentClosure(configured, changed, records, nil)
|
||||||
for key, artifactCfg := range configured {
|
|
||||||
for _, dependency := range normalizedAnalyzeDependencyKeys(artifactCfg.DependsOn) {
|
|
||||||
reverse[dependency] = append(reverse[dependency], key)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for key := range reverse {
|
|
||||||
sort.Strings(reverse[key])
|
|
||||||
}
|
|
||||||
queue := append([]string(nil), reverse[changed]...)
|
|
||||||
seen := make(map[string]struct{}, len(queue))
|
|
||||||
for len(queue) > 0 {
|
|
||||||
key := queue[0]
|
|
||||||
queue = queue[1:]
|
|
||||||
if _, visited := seen[key]; visited {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
seen[key] = struct{}{}
|
|
||||||
staleProjectedAnalyzeRecord(records, key)
|
|
||||||
queue = append(queue, reverse[key]...)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func currentAnalyzeArtifactRecord(
|
func currentAnalyzeArtifactRecord(
|
||||||
@@ -445,6 +425,18 @@ func staleUnscheduledAnalyzeDependents(
|
|||||||
changed string,
|
changed string,
|
||||||
invocationKeys map[string]struct{},
|
invocationKeys map[string]struct{},
|
||||||
records map[string]manifest.AnalyzeArtifactRecord,
|
records map[string]manifest.AnalyzeArtifactRecord,
|
||||||
|
) {
|
||||||
|
staleAnalyzeDependentClosure(configured, changed, records, func(key string) bool {
|
||||||
|
_, evaluated := invocationKeys[key]
|
||||||
|
return !evaluated
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func staleAnalyzeDependentClosure(
|
||||||
|
configured map[string]config.ScriptoriumArtifactConfig,
|
||||||
|
changed string,
|
||||||
|
records map[string]manifest.AnalyzeArtifactRecord,
|
||||||
|
eligible func(string) bool,
|
||||||
) {
|
) {
|
||||||
reverse := make(map[string][]string, len(configured))
|
reverse := make(map[string][]string, len(configured))
|
||||||
for key, artifactCfg := range configured {
|
for key, artifactCfg := range configured {
|
||||||
@@ -464,7 +456,7 @@ func staleUnscheduledAnalyzeDependents(
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
seen[key] = struct{}{}
|
seen[key] = struct{}{}
|
||||||
if _, evaluated := invocationKeys[key]; evaluated {
|
if eligible != nil && !eligible(key) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
staleProjectedAnalyzeRecord(records, key)
|
staleProjectedAnalyzeRecord(records, key)
|
||||||
|
|||||||
Reference in New Issue
Block a user