32
versionCache worker_versioning.VersionMembershipAndReactivationStatusCache,
33
reactivationSignaler api.VersionReactivationSignalerFn,
34
>
) (*historyservice.UpdateWorkflowExecutionOptionsResponse, error) {
api.go
35
>
req := request.GetUpdateRequest()
36
>
ns, err := api.GetActiveNamespace(shardCtx, namespace.ID(request.GetNamespaceId()), req.GetWorkflowExecution().GetWorkflowId())
37
>
if err != nil {
38
return nil, err
39
}
40
>
ret := &historyservice.UpdateWorkflowExecutionOptionsResponse{}
api.go
41
>
42
>
// Store versioning override to send reactivation signal after successful persistence
43
>
var versioningOverrideForReactivation *workflowpb.VersioningOverride
44
>
var shouldSkipReactivation bool
45
>
var revisionNumber int64
46
>
47
>
err = api.GetAndUpdateWorkflowWithNew(
48
>
ctx,
49
>
nil,
50
>
definition.NewWorkflowKey(
51
>
ns.ID().String(),
52
>
req.GetWorkflowExecution().GetWorkflowId(),
53
>
req.GetWorkflowExecution().GetRunId(),
54
>
),
55
>
func(workflowLease api.WorkflowLease) (*api.UpdateWorkflowAction, error) {
56
>
mutableState := workflowLease.GetMutableState()
57
>
if !mutableState.IsWorkflowExecutionRunning() {
58
// in-memory mutable state is still clean, let updateError=nil in the defer func()
59
// to prevent clearing and reloading mutable state while releasing the lock