From e691f7d493b9df24fab8a4936f33200b2c71e18f Mon Sep 17 00:00:00 2001 From: Ruslan Gustomiasov Date: Fri, 31 May 2019 23:00:33 +0200 Subject: [PATCH] change aws encryptedCheck to exponential backoff --- .../k8s.io/legacy-cloud-providers/aws/aws.go | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/staging/src/k8s.io/legacy-cloud-providers/aws/aws.go b/staging/src/k8s.io/legacy-cloud-providers/aws/aws.go index d74f89c7e15..87d7c4ccc29 100644 --- a/staging/src/k8s.io/legacy-cloud-providers/aws/aws.go +++ b/staging/src/k8s.io/legacy-cloud-providers/aws/aws.go @@ -225,12 +225,13 @@ const ( createTagFactor = 2.0 createTagSteps = 9 - // encryptedCheck* is configuration of poll for created volume to check + // encryptedCheck* is configuration of exponential backoff for created volume to check // it has not been silently removed by AWS. // 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. + encryptedCheckInitialDelay = 1 * time.Second + encryptedCheckFactor = 2.0 + encryptedCheckSteps = 8 // 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 @@ -2419,8 +2420,12 @@ func (c *Cloud) waitUntilVolumeAvailable(volumeName KubernetesVolumeID) error { // Unreachable code return err } - - err = wait.Poll(encryptedCheckInterval, encryptedCheckTimeout, func() (done bool, err error) { + backoff := wait.Backoff{ + Duration: encryptedCheckInitialDelay, + Factor: encryptedCheckFactor, + Steps: encryptedCheckSteps, + } + err = wait.ExponentialBackoff(backoff, func() (done bool, err error) { vol, err := disk.describeVolume() if err != nil { return true, err