Skip to content

Commit 03cd76e

Browse files
committed
Introduce retry logic for project delete to address eventual consistency
1 parent be434d8 commit 03cd76e

File tree

3 files changed

+22
-2
lines changed

3 files changed

+22
-2
lines changed

codefresh/resource_project.go

+15-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
package codefresh
22

33
import (
4+
"log"
5+
"time"
6+
7+
"github.com/cenkalti/backoff"
48
cfClient "github.com/codefresh-io/terraform-provider-codefresh/client"
59
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
610
)
@@ -90,8 +94,17 @@ func resourceProjectUpdate(d *schema.ResourceData, meta interface{}) error {
9094

9195
func resourceProjectDelete(d *schema.ResourceData, meta interface{}) error {
9296
client := meta.(*cfClient.Client)
93-
94-
err := client.DeleteProject(d.Id())
97+
// Adding a Retry backoff to address eventual consistency for the API
98+
expBackoff := backoff.NewExponentialBackOff()
99+
expBackoff.MaxElapsedTime = 2 * time.Second
100+
err := backoff.Retry(
101+
func() error {
102+
err := client.DeleteProject(d.Id())
103+
if err != nil {
104+
log.Printf("Unable to destroy Project due to error %v", err)
105+
}
106+
return err
107+
}, expBackoff)
95108
if err != nil {
96109
return err
97110
}

go.mod

+2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ require (
55
github.com/aws/aws-sdk-go v1.30.12 // indirect
66
github.com/bflad/tfproviderdocs v0.6.0
77
github.com/bflad/tfproviderlint v0.14.0
8+
github.com/cenkalti/backoff v2.2.1+incompatible
9+
github.com/cenkalti/backoff/v4 v4.1.0
810
github.com/client9/misspell v0.3.4
911
github.com/dlclark/regexp2 v1.4.0
1012
github.com/ghodss/yaml v1.0.0

go.sum

+5
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,11 @@ github.com/bmatcuk/doublestar v1.2.1 h1:eetYiv8DDYOZcBADY+pRvRytf3Dlz1FhnpvL2FsC
5656
github.com/bmatcuk/doublestar v1.2.1/go.mod h1:wiQtGV+rzVYxB7WIlirSN++5HPtPlXEo9MEoZQC/PmE=
5757
github.com/bombsimon/wsl/v3 v3.0.0 h1:w9f49xQatuaeTJFaNP4SpiWSR5vfT6IstPtM62JjcqA=
5858
github.com/bombsimon/wsl/v3 v3.0.0/go.mod h1:st10JtZYLE4D5sC7b8xV4zTKZwAQjCH/Hy2Pm1FNZIc=
59+
github.com/cenkalti/backoff v1.1.0 h1:QnvVp8ikKCDWOsFheytRCoYWYPO/ObCTBGxT19Hc+yE=
60+
github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4=
61+
github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM=
62+
github.com/cenkalti/backoff/v4 v4.1.0 h1:c8LkOFQTzuO0WBM/ae5HdGQuZPfPxp7lqBRwQRm4fSc=
63+
github.com/cenkalti/backoff/v4 v4.1.0/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw=
5964
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
6065
github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
6166
github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s=

0 commit comments

Comments
 (0)