UPSTREAM: 78601: change aws encryptedCheck to exponential backoff
@@ -225,12 +225,12 @@ const (
createTagFactor = 2.0
createTagSteps = 9
- // encryptedCheck* is configuration of poll for created volume to check
- // it has not been silently removed by AWS.
+ // volumeCreate* is configuration of exponential backoff for created volume.
// On a random AWS account (shared among several developers) it took 4s on
- // average.
- encryptedCheckInterval = 1 * time.Second
- encryptedCheckTimeout = 30 * time.Second
+ // average, 8s max.
+ volumeCreateInitialDelay = 5 * time.Second
+ volumeCreateBackoffFactor = 1.2
+ volumeCreateBackoffSteps = 10
// Number of node names that can be added to a filter. The AWS limit is 200
// but we are using a lower limit on purpose
@@ -2364,8 +2364,13 @@ func (c *Cloud) waitUntilVolumeAvailable(volumeName KubernetesVolumeID) error {
// Unreachable code
return err
}
-
- err = wait.Poll(encryptedCheckInterval, encryptedCheckTimeout, func() (done bool, err error) {
+ time.Sleep(5 * time.Second)
+ backoff := wait.Backoff{
+ Duration: volumeCreateInitialDelay,
+ Factor: volumeCreateBackoffFactor,
+ Steps: volumeCreateBackoffSteps,
+ }
+ err = wait.ExponentialBackoff(backoff, func() (done bool, err error) {
vol, err := disk.describeVolume()
if err != nil {
return true, err
