diff --git a/features/deployment_versioning/common.go b/features/deployment_versioning/common.go index 5681cfeb..2320e3bd 100644 --- a/features/deployment_versioning/common.go +++ b/features/deployment_versioning/common.go @@ -6,6 +6,7 @@ import ( "github.com/temporalio/features/harness/go/harness" enumspb "go.temporal.io/api/enums/v1" + "go.temporal.io/api/workflowservice/v1" "go.temporal.io/sdk/client" "go.temporal.io/sdk/worker" "go.temporal.io/sdk/workflow" @@ -89,8 +90,11 @@ func SetCurrent(r *harness.Runner, ctx context.Context, deploymentName string, v BuildID: version.BuildID, ConflictToken: response1.ConflictToken, }) + if err != nil { + return err + } - return err + return WaitForRoutingConfigPropagation(r, ctx, deploymentName) } func SetRamp(r *harness.Runner, ctx context.Context, deploymentName string, version worker.WorkerDeploymentVersion, percentage float32) error { @@ -112,10 +116,30 @@ func SetRamp(r *harness.Runner, ctx context.Context, deploymentName string, vers _, err = dHandle.SetRampingVersion(ctx, client.WorkerDeploymentSetRampingVersionOptions{ BuildID: version.BuildID, ConflictToken: response1.ConflictToken, - Percentage: float32(100.0), + Percentage: percentage, }) + if err != nil { + return err + } + + return WaitForRoutingConfigPropagation(r, ctx, deploymentName) +} - return err +func WaitForRoutingConfigPropagation(r *harness.Runner, ctx context.Context, deploymentName string) error { + return r.DoUntilEventually(ctx, 300*time.Millisecond, 10*time.Second, + func() bool { + resp, err := r.Client.WorkflowService().DescribeWorkerDeployment(ctx, + &workflowservice.DescribeWorkerDeploymentRequest{ + Namespace: r.Namespace, + DeploymentName: deploymentName, + }) + if err != nil { + return false + } + state := resp.GetWorkerDeploymentInfo().GetRoutingConfigUpdateState() + return state == enumspb.ROUTING_CONFIG_UPDATE_STATE_COMPLETED || + state == enumspb.ROUTING_CONFIG_UPDATE_STATE_UNSPECIFIED + }) } func ServerSupportsDeployments(ctx context.Context, r *harness.Runner) bool { diff --git a/features/go.mod b/features/go.mod index 48688acb..e1dd87b0 100644 --- a/features/go.mod +++ b/features/go.mod @@ -10,7 +10,7 @@ require ( github.com/temporalio/features/harness/go v0.0.0-00010101000000-000000000000 github.com/uber-go/tally/v4 v4.1.1 github.com/urfave/cli/v2 v2.3.0 - go.temporal.io/api v1.53.0 + go.temporal.io/api v1.60.0 go.temporal.io/sdk v1.37.0 go.temporal.io/sdk/contrib/tally v0.2.0 golang.org/x/mod v0.17.0 diff --git a/features/go.sum b/features/go.sum index 3546eaa7..728eba19 100644 --- a/features/go.sum +++ b/features/go.sum @@ -182,8 +182,8 @@ github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9dec github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.temporal.io/api v1.5.0/go.mod h1:BqKxEJJYdxb5dqf0ODfzfMxh8UEQ5L3zKS51FiIYYkA= -go.temporal.io/api v1.53.0 h1:6vAFpXaC584AIELa6pONV56MTpkm4Ha7gPWL2acNAjo= -go.temporal.io/api v1.53.0/go.mod h1:iaxoP/9OXMJcQkETTECfwYq4cw/bj4nwov8b3ZLVnXM= +go.temporal.io/api v1.60.0 h1:SlRkizt3PXu/J62NWlUNLldHtJhUxfsBRuF4T0KYkgY= +go.temporal.io/api v1.60.0/go.mod h1:iaxoP/9OXMJcQkETTECfwYq4cw/bj4nwov8b3ZLVnXM= go.temporal.io/sdk v1.12.0/go.mod h1:lSp3lH1lI0TyOsus0arnO3FYvjVXBZGi/G7DjnAnm6o= go.temporal.io/sdk v1.37.0 h1:RbwCkUQuqY4rfCzdrDZF9lgT7QWG/pHlxfZFq0NPpDQ= go.temporal.io/sdk v1.37.0/go.mod h1:tOy6vGonfAjrpCl6Bbw/8slTgQMiqvoyegRv2ZHPm5M= diff --git a/go.mod b/go.mod index a04aa8c4..b3af00c9 100644 --- a/go.mod +++ b/go.mod @@ -31,7 +31,7 @@ require ( github.com/twmb/murmur3 v1.1.8 // indirect github.com/uber-go/tally/v4 v4.1.7 // indirect github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect - go.temporal.io/api v1.53.0 // indirect + go.temporal.io/api v1.60.0 // indirect go.temporal.io/sdk/contrib/tally v0.2.0 // indirect go.uber.org/atomic v1.11.0 // indirect go.uber.org/multierr v1.11.0 // indirect diff --git a/go.sum b/go.sum index 2d984b77..1d17da0b 100644 --- a/go.sum +++ b/go.sum @@ -183,8 +183,8 @@ github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9dec github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.temporal.io/api v1.5.0/go.mod h1:BqKxEJJYdxb5dqf0ODfzfMxh8UEQ5L3zKS51FiIYYkA= -go.temporal.io/api v1.53.0 h1:6vAFpXaC584AIELa6pONV56MTpkm4Ha7gPWL2acNAjo= -go.temporal.io/api v1.53.0/go.mod h1:iaxoP/9OXMJcQkETTECfwYq4cw/bj4nwov8b3ZLVnXM= +go.temporal.io/api v1.60.0 h1:SlRkizt3PXu/J62NWlUNLldHtJhUxfsBRuF4T0KYkgY= +go.temporal.io/api v1.60.0/go.mod h1:iaxoP/9OXMJcQkETTECfwYq4cw/bj4nwov8b3ZLVnXM= go.temporal.io/sdk v1.12.0/go.mod h1:lSp3lH1lI0TyOsus0arnO3FYvjVXBZGi/G7DjnAnm6o= go.temporal.io/sdk v1.37.0 h1:RbwCkUQuqY4rfCzdrDZF9lgT7QWG/pHlxfZFq0NPpDQ= go.temporal.io/sdk v1.37.0/go.mod h1:tOy6vGonfAjrpCl6Bbw/8slTgQMiqvoyegRv2ZHPm5M= diff --git a/harness/go/go.mod b/harness/go/go.mod index 8417712d..8fae3d29 100644 --- a/harness/go/go.mod +++ b/harness/go/go.mod @@ -8,7 +8,7 @@ require ( github.com/google/uuid v1.6.0 github.com/stretchr/testify v1.10.0 github.com/urfave/cli/v2 v2.3.0 - go.temporal.io/api v1.53.0 + go.temporal.io/api v1.60.0 go.temporal.io/sdk v1.37.0 go.uber.org/zap v1.19.1 golang.org/x/mod v0.17.0 diff --git a/harness/go/go.sum b/harness/go/go.sum index 1e5d8d0b..c53b1fe7 100644 --- a/harness/go/go.sum +++ b/harness/go/go.sum @@ -56,8 +56,8 @@ github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/X github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -go.temporal.io/api v1.53.0 h1:6vAFpXaC584AIELa6pONV56MTpkm4Ha7gPWL2acNAjo= -go.temporal.io/api v1.53.0/go.mod h1:iaxoP/9OXMJcQkETTECfwYq4cw/bj4nwov8b3ZLVnXM= +go.temporal.io/api v1.60.0 h1:SlRkizt3PXu/J62NWlUNLldHtJhUxfsBRuF4T0KYkgY= +go.temporal.io/api v1.60.0/go.mod h1:iaxoP/9OXMJcQkETTECfwYq4cw/bj4nwov8b3ZLVnXM= go.temporal.io/sdk v1.37.0 h1:RbwCkUQuqY4rfCzdrDZF9lgT7QWG/pHlxfZFq0NPpDQ= go.temporal.io/sdk v1.37.0/go.mod h1:tOy6vGonfAjrpCl6Bbw/8slTgQMiqvoyegRv2ZHPm5M= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=