91
logger log.Logger,
92
buildId string,
94
>
reachability, exitPoint, err := rc.run(ctx, buildId)
95
>
handler := metrics.GetPerTaskQueueFamilyScope(metricsHandler, rc.nsName.String(), rc.taskQueue, rc.tqConfig.BreakdownMetricsByTaskQueue())
96
>
metrics.ReachabilityExitPointCounter.With(handler).Record(1,
97
>
metrics.WorkerVersionTag(buildId, rc.tqConfig.BreakdownMetricsByBuildID()),
98
>
metrics.StringTag(reachabilityExitPointTagName, reachabilityExitPoint2TagValue[exitPoint]))
99
>
logger.Info("Calculated reachability for build id",
100
>
tag.WorkerVersion(buildId),
101
>
tag.BuildIdTaskReachabilityTag(reachability.String()),
102
>
tag.ReachabilityExitPointTag(reachabilityExitPoint2TagValue[exitPoint]),
103
>
tag.WorkflowNamespace(rc.nsName.String()),
104
>
tag.WorkflowTaskQueueName(rc.taskQueue.Name()),
105
>
)
106
>
return reachability, err
107
>
}
108
109
>
func (rc *reachabilityCalculator) run(ctx context.Context, buildId string) (enumspb.BuildIdTaskReachability, reachabilityExitPoint, error) {
reachability.go
110
>
// 1. Easy UNREACHABLE case
111
>
if isActiveRedirectRuleSource(buildId, rc.redirectRules) {
112
return enumspb.BUILD_ID_TASK_REACHABILITY_UNREACHABLE, checkedRuleSourcesForInput, nil
113
}
114
115
// Gather list of all build ids that could point to buildId
116
>
buildIdsOfInterest := rc.getBuildIdsOfInterest(buildId, time.Duration(0))
reachability.go
117
>
118
>
// 2. Cases for REACHABLE
119
>
// 2a. If buildId is assignable to new tasks
120
>
if slices.ContainsFunc(buildIdsOfInterest, rc.isReachableActiveAssignmentRuleTargetOrDefault) {
121
return enumspb.BUILD_ID_TASK_REACHABILITY_REACHABLE, checkedRuleTargetsForUpstream, nil
122
}
123
124
// 2b. If buildId could be reached from the backlog
125
>
if existsBacklog, err := rc.existsBackloggedActivityOrWFTaskAssignedToAny(ctx, buildIdsOfInterest); err != nil {
reachability.go
126
return enumspb.BUILD_ID_TASK_REACHABILITY_UNSPECIFIED, checkedBacklogForUpstream, err
128
return enumspb.BUILD_ID_TASK_REACHABILITY_REACHABLE, checkedBacklogForUpstream, nil
129
}