Skip to content

Commit 9d447d6

Browse files
committed
Reduce flakiness by ensuring three successful fetches before returning.
1 parent 0a451ed commit 9d447d6

File tree

1 file changed

+20
-0
lines changed

1 file changed

+20
-0
lines changed

google/iam.go

+20
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,26 @@ func iamPolicyReadModifyWrite(updater ResourceIamUpdater, modify iamPolicyModify
6464
log.Printf("[DEBUG]: Setting policy for %s to %+v\n", updater.DescribeResource(), p)
6565
err = updater.SetResourceIamPolicy(p)
6666
if err == nil {
67+
for successfulFetches := 0; successfulFetches < 3; {
68+
new_p, err := updater.GetResourceIamPolicy()
69+
if err != nil {
70+
return err
71+
}
72+
modified_p := new_p
73+
err = modify(modified_p)
74+
if err != nil {
75+
return err
76+
}
77+
if modified_p == new_p {
78+
successfulFetches += 1
79+
} else {
80+
backoff = backoff * 2
81+
if backoff > 30*time.Second {
82+
return fmt.Errorf("Error applying IAM policy to %s: Waited too long for propagation.\n", updater.DescribeResource())
83+
}
84+
}
85+
time.Sleep(backoff * 5)
86+
}
6787
break
6888
}
6989
if isConflictError(err) {

0 commit comments

Comments
 (0)