mirror of
https://github.com/letic/terraform-provider-google.git
synced 2024-10-03 01:01:06 +00:00
add another retry if iam read returns nil (#2629)
<!-- This change is generated by MagicModules. --> /cc @danawillow
This commit is contained in:
parent
7a3f96ad28
commit
4d9a003bec
@ -71,7 +71,11 @@ func iamPolicyReadModifyWrite(updater ResourceIamUpdater, modify iamPolicyModify
|
||||
if err == nil {
|
||||
fetchBackoff := 1 * time.Second
|
||||
for successfulFetches := 0; successfulFetches < 3; {
|
||||
if fetchBackoff > 30*time.Second {
|
||||
return fmt.Errorf("Error applying IAM policy to %s: Waited too long for propagation.\n", updater.DescribeResource())
|
||||
}
|
||||
time.Sleep(fetchBackoff)
|
||||
log.Printf("[DEBUG]: Retrieving policy for %s\n", updater.DescribeResource())
|
||||
new_p, err := updater.GetResourceIamPolicy()
|
||||
if err != nil {
|
||||
// Quota for Read is pretty limited, so watch out for running out of quota.
|
||||
@ -81,6 +85,12 @@ func iamPolicyReadModifyWrite(updater ResourceIamUpdater, modify iamPolicyModify
|
||||
return err
|
||||
}
|
||||
}
|
||||
log.Printf("[DEBUG]: Retrieved policy for %s: %+v\n", updater.DescribeResource(), p)
|
||||
if new_p == nil {
|
||||
// https://github.com/terraform-providers/terraform-provider-google/issues/2625
|
||||
fetchBackoff = fetchBackoff * 2
|
||||
continue
|
||||
}
|
||||
modified_p := new_p
|
||||
// This relies on the fact that `modify` is idempotent: since other changes might have
|
||||
// happened between the call to set the policy and now, we just need to make sure that
|
||||
@ -94,9 +104,6 @@ func iamPolicyReadModifyWrite(updater ResourceIamUpdater, modify iamPolicyModify
|
||||
successfulFetches += 1
|
||||
} else {
|
||||
fetchBackoff = fetchBackoff * 2
|
||||
if fetchBackoff > 30*time.Second {
|
||||
return fmt.Errorf("Error applying IAM policy to %s: Waited too long for propagation.\n", updater.DescribeResource())
|
||||
}
|
||||
}
|
||||
}
|
||||
break
|
||||
|
Loading…
Reference in New Issue
Block a user