From 4bc324dbecd92f9df47822ca213b40de7d4ab4d1 Mon Sep 17 00:00:00 2001 From: Pekka Nurmi Date: Thu, 26 Oct 2023 12:45:32 +0300 Subject: [PATCH] fix(kubernetes): sleep before `GET` request in `WaitForKubernetesClusterState` Sleep before `GET` request in `WaitForKubernetesClusterState` to avoid getting stale state in some scenarios. This will also align function behavior with other services. --- CHANGELOG.md | 3 +++ upcloud/service/kubernetes.go | 3 +-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2d0f38ed..10a82257 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,9 @@ See updating [Changelog example here](https://keepachangelog.com/en/1.0.0/) ## Added - kubernetes: `WaitForKubernetesNodeGroupState` method for waiting the node group to achieve a desired state +### Changed +- kubernetes: sleep before `GET` request in `WaitForKubernetesClusterState` + ## [6.8.2] ### Added - account: `NetworkPeerings`, `NTPExcessGiB`, `StorageMaxIOPS`, and `LoadBalancers` fields to the `ResourceLimits` struct. diff --git a/upcloud/service/kubernetes.go b/upcloud/service/kubernetes.go index 0b64d974..1b35d387 100644 --- a/upcloud/service/kubernetes.go +++ b/upcloud/service/kubernetes.go @@ -82,6 +82,7 @@ func (s *Service) WaitForKubernetesClusterState(ctx context.Context, r *request. for { attempts++ + time.Sleep(sleepDuration) details, err := s.GetKubernetesCluster(ctx, &request.GetKubernetesClusterRequest{ UUID: r.UUID, @@ -100,8 +101,6 @@ func (s *Service) WaitForKubernetesClusterState(ctx context.Context, r *request. return details, nil } - time.Sleep(sleepDuration) - if time.Duration(attempts)*sleepDuration >= r.Timeout { return nil, fmt.Errorf("timeout reached while waiting for Kubernetes cluster to enter state \"%s\"", r.DesiredState) }