517
return temporal.NewNonRetryableApplicationError(errVersionAlreadyExists, errVersionAlreadyExists, nil)
518
}
520
}
521
522
>
func (d *WorkflowRunner) handleCreateWorkerDeploymentVersion(ctx workflow.Context, args *deploymentspb.CreateWorkerDeploymentVersionArgs) (*deploymentspb.CreateWorkerDeploymentVersionResponse, error) {
workflow.go
523
>
err := d.lock.Lock(ctx)
524
>
if err != nil {
525
d.logger.Error("Could not acquire workflow lock")
526
return nil, serviceerror.NewDeadlineExceeded("Could not acquire workflow lock")
527
}
529
>
d.setStateChanged()
530
>
d.lock.Unlock()
531
>
}()
532
533
// Re-validate after acquiring lock.
534
>
err = d.validateCreateWorkerDeploymentVersion(args)
workflow.go
535
>
if err != nil {
536
return nil, err
537
}
538
539
// Idempotent: version exists with the same request ID.
540
>
if existing, ok := d.State.Versions[args.GetVersion()]; ok && existing.GetCreateRequestId() == args.GetRequestId() {
workflow.go
541
return &deploymentspb.CreateWorkerDeploymentVersionResponse{}, nil
542
}
543
544
// Check max versions limit.
546
>
if len(d.State.Versions) >= maxVersions {
547
err := d.tryDeleteVersion(ctx)
548
if err != nil {