95
reactivationSignaler api.VersionReactivationSignalerFn,
96
createLeaseFn api.CreateOrUpdateLeaseFunc,
97
>
) (*Starter, error) {
api.go
98
>
namespaceEntry, err := api.GetActiveNamespace(shardContext, namespace.ID(request.GetNamespaceId()), request.StartRequest.WorkflowId)
99
>
if err != nil {
100
return nil, err
101
}
102
104
>
// metricsHandler is lazily created when needed in Starter.getMetricsHandler
105
>
metricsHandler: nil,
106
>
shardContext: shardContext,
107
>
workflowConsistencyChecker: workflowConsistencyChecker,
108
>
matchingClient: matchingClient,
109
>
tokenSerializer: tokenSerializer,
110
>
request: request,
111
>
namespace: namespaceEntry,
112
>
createOrUpdateLeaseFn: createLeaseFn,
113
>
versionCache: versionCache,
114
>
reactivationSignaler: reactivationSignaler,
115
>
}, nil
116
}
117
118
// prepare applies request overrides, validates the request, and records eager execution metrics.
119
>
func (s *Starter) prepare(ctx context.Context) error {
api.go
120
>
request := s.request.StartRequest
121
>
122
>
api.MigrateWorkflowIDReusePolicyForRunningWorkflow(
123
>
&request.WorkflowIdReusePolicy,
124
>
&request.WorkflowIdConflictPolicy)
125
>
126
>
api.OverrideStartWorkflowExecutionRequest(
127
>
request,
128
>
metrics.HistoryStartWorkflowExecutionScope,
129
>
s.shardContext,
130
>
s.shardContext.GetMetricsHandler(),
131
>
)
132
>
133
>
err := api.ValidateStartWorkflowExecutionRequest(ctx, request, s.shardContext, s.namespace, "StartWorkflowExecution")
134
>
if err != nil {
135
return err
136
}
137
138
// Validation for versioning override, if any.
139
>
s.shouldSkipReactivation, s.revisionNumber, err = worker_versioning.ValidateVersioningOverrideAndGetReactivationEligibility(ctx, request.GetVersioningOverride(), s.matchingClient, s.versionCache, request.GetTaskQueue().GetName(), enumspb.TASK_QUEUE_TYPE_WORKFLOW, s.namespace.ID().String())
api.go
140
>
if err != nil {
141
return err
142
}
143
144
>
if request.RequestEagerExecution {
api.go
145
metricsHandler := s.getMetricsHandler()
146
metrics.WorkflowEagerExecutionCounter.With(metricsHandler).Record(1)