Share analysis dependent staling traversal

This commit is contained in:
2026-08-29 20:50:43 +00:00
parent fd5ccc668b
commit b804d0f2c8

View File

@@ -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)