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