From ab156b01883666e3f161f8363121d8ca32b242fa Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 9 Sep 2026 22:32:10 +0000 Subject: [PATCH] [dotnet-code] Clarify edge runner kind internals Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- workflow/internal/execution/edgerunner.go | 27 +++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/workflow/internal/execution/edgerunner.go b/workflow/internal/execution/edgerunner.go index 925045c6..c04ab373 100644 --- a/workflow/internal/execution/edgerunner.go +++ b/workflow/internal/execution/edgerunner.go @@ -33,6 +33,14 @@ type statefulEdgeState struct { unseen map[string]struct{} } +type edgeKind int + +const ( + directEdge edgeKind = iota + fanOutEdge + fanInEdge +) + func newStatefulEdgeState(sourceIDs []string) *statefulEdgeState { state := &statefulEdgeState{ sourceIDs: sourceIDs, @@ -134,7 +142,7 @@ func NewEdgeRunner(wf *workflow.Workflow, tracer StepTracer, ensureExecutor func var statefulEdges map[int]*statefulEdgeState for _, edges := range wf.Edges() { for _, edge := range edges { - if len(edge.Connection.SourceIDs) <= 1 { + if kindOfEdge(edge) != fanInEdge { continue } if statefulEdges == nil { @@ -458,11 +466,22 @@ func edgeGroupMetadata(edge workflow.Edge) observability.EdgeGroupMetadata { } func edgeGroupType(edge workflow.Edge) string { - if len(edge.Connection.SourceIDs) > 1 { + switch kindOfEdge(edge) { + case fanInEdge: return "FanInEdgeRunner" + case fanOutEdge: + return "FanOutEdgeRunner" + default: + return "DirectEdgeRunner" + } +} + +func kindOfEdge(edge workflow.Edge) edgeKind { + if len(edge.Connection.SourceIDs) > 1 { + return fanInEdge } if len(edge.Connection.SinkIDs) > 1 || edge.Assigner != nil { - return "FanOutEdgeRunner" + return fanOutEdge } - return "DirectEdgeRunner" + return directEdge }