864
865
// If routing update time has changed then we want to let the update through.
866
>
func (d *VersionWorkflowRunner) validateSyncState(args *deploymentspb.SyncVersionStateUpdateArgs) error {
version_workflow.go
867
>
if err := d.ensureNotDeleted(); err != nil {
868
return err
869
}
870
871
>
res := &deploymentspb.SyncVersionStateResponse{VersionState: d.VersionState}
version_workflow.go
872
>
if args.GetRoutingUpdateTime().AsTime().Equal(d.GetVersionState().GetRoutingUpdateTime().AsTime()) {
873
return temporal.NewApplicationError("no change", errNoChangeType, res)
874
}
876
}
877
878
//nolint:staticcheck // SA1019
879
>
func (d *VersionWorkflowRunner) handleSyncState(ctx workflow.Context, args *deploymentspb.SyncVersionStateUpdateArgs) (*deploymentspb.SyncVersionStateResponse, error) {
version_workflow.go
880
>
if err := d.preUpdateChecks(ctx); err != nil {
881
return nil, err
882
}
883
884
// use lock to enforce only one update at a time
886
>
if err != nil {
887
d.logger.Error("Could not acquire workflow lock")
888
return nil, serviceerror.NewDeadlineExceeded("Could not acquire workflow lock")
889
}
891
>
// although the handler might have not changed the state and had returned an error, still
892
>
// it's better to CaN because some history events are built now.
893
>
d.setStateChanged()
894
>
d.lock.Unlock()
895
>
}()
896
898
return nil, err
899
}
900
902
// wait until deployment workflow started
903
err = workflow.Await(ctx, func() bool { return d.VersionState.StartedDeploymentWorkflow })