diff --git a/internal/service/redshiftserverless/workgroup.go b/internal/service/redshiftserverless/workgroup.go index 9d97a7469a6c..bc5849561a70 100644 --- a/internal/service/redshiftserverless/workgroup.go +++ b/internal/service/redshiftserverless/workgroup.go @@ -475,8 +475,14 @@ func resourceWorkgroupDelete(ctx context.Context, d *schema.ResourceData, meta i } func updateWorkgroup(ctx context.Context, conn *redshiftserverless.Client, input *redshiftserverless.UpdateWorkgroupInput, timeout time.Duration) error { + _, err := tfresource.RetryWhenIsAErrorMessageContains[*awstypes.ConflictException](ctx, workgroupUpdatedTimeout, + func() (interface{}, error) { + return conn.UpdateWorkgroup(ctx, input) + }, + // "ConflictException: There is an operation running on the workgroup. Try to update it later." + "operation running") + name := aws.ToString(input.WorkgroupName) - _, err := conn.UpdateWorkgroup(ctx, input) if err != nil { return fmt.Errorf("updating Redshift Serverless Workgroup (%s): %w", name, err) @@ -491,6 +497,7 @@ func updateWorkgroup(ctx context.Context, conn *redshiftserverless.Client, input const ( workgroupDeletedTimeout = 10 * time.Minute + workgroupUpdatedTimeout = 10 * time.Minute ) func findWorkgroupByName(ctx context.Context, conn *redshiftserverless.Client, name string) (*awstypes.Workgroup, error) { diff --git a/internal/service/redshiftserverless/workgroup_test.go b/internal/service/redshiftserverless/workgroup_test.go index 446dbe57c0ac..ec436c49c748 100644 --- a/internal/service/redshiftserverless/workgroup_test.go +++ b/internal/service/redshiftserverless/workgroup_test.go @@ -403,6 +403,12 @@ resource "aws_redshiftserverless_workgroup" "test" { workgroup_name = %[1]q base_capacity = %[2]d } + +resource "aws_redshiftserverless_snapshot" "test" { + namespace_name = aws_redshiftserverless_workgroup.test.namespace_name + snapshot_name = %[1]q + retention_period = 10 +} `, rName, baseCapacity) }