From 0e4d185370b6e1e8cf186dcb8946bb44ca410e24 Mon Sep 17 00:00:00 2001 From: Benoit Tigeot Date: Fri, 21 Mar 2025 09:54:44 +0100 Subject: [PATCH 1/4] Inform about time spent waiting resources to be ready in slog format Signed-off-by: Benoit Tigeot --- pkg/kube/wait.go | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/pkg/kube/wait.go b/pkg/kube/wait.go index 7eb931496..8844b0876 100644 --- a/pkg/kube/wait.go +++ b/pkg/kube/wait.go @@ -19,6 +19,7 @@ package kube // import "helm.sh/helm/v4/pkg/kube" import ( "context" "fmt" + "log/slog" "net/http" "time" @@ -101,12 +102,13 @@ func (w *waiter) isRetryableHTTPStatusCode(httpStatusCode int32) bool { // waitForDeletedResources polls to check if all the resources are deleted or a timeout is reached func (w *waiter) waitForDeletedResources(deleted ResourceList) error { - w.log("beginning wait for %d resources to be deleted with timeout of %v", len(deleted), w.timeout) + slog.Info("beginning wait for resources to be deleted", "count", len(deleted), "timeout", w.timeout) + startTime := time.Now() ctx, cancel := context.WithTimeout(context.Background(), w.timeout) defer cancel() - return wait.PollUntilContextCancel(ctx, 2*time.Second, true, func(_ context.Context) (bool, error) { + err := wait.PollUntilContextCancel(ctx, 2*time.Second, true, func(ctx context.Context) (bool, error) { for _, v := range deleted { err := v.Get() if err == nil || !apierrors.IsNotFound(err) { @@ -115,6 +117,15 @@ func (w *waiter) waitForDeletedResources(deleted ResourceList) error { } return true, nil }) + + elapsed := time.Since(startTime).Round(time.Second) + if err != nil { + slog.Debug("wait for resources failed", "elapsed", elapsed, "error", err) + } else { + slog.Debug("wait for resources succeeded", "elapsed", elapsed) + } + + return err } // SelectorsForObject returns the pod label selector for a given object From e3e84b6dfe462cbd45e5252796f0b3b7f431dc6e Mon Sep 17 00:00:00 2001 From: Benoit Tigeot Date: Fri, 21 Mar 2025 10:08:05 +0100 Subject: [PATCH 2/4] "beginning wait" is dedicated to be display as debug log Signed-off-by: Benoit Tigeot --- pkg/kube/wait.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/kube/wait.go b/pkg/kube/wait.go index 8844b0876..de53a67f1 100644 --- a/pkg/kube/wait.go +++ b/pkg/kube/wait.go @@ -102,7 +102,7 @@ func (w *waiter) isRetryableHTTPStatusCode(httpStatusCode int32) bool { // waitForDeletedResources polls to check if all the resources are deleted or a timeout is reached func (w *waiter) waitForDeletedResources(deleted ResourceList) error { - slog.Info("beginning wait for resources to be deleted", "count", len(deleted), "timeout", w.timeout) + slog.Debug("beginning wait for resources to be deleted", "count", len(deleted), "timeout", w.timeout) startTime := time.Now() ctx, cancel := context.WithTimeout(context.Background(), w.timeout) From 94cb21c7c48ccefafbd8ad04defe5846bcfb2751 Mon Sep 17 00:00:00 2001 From: Benoit Tigeot Date: Fri, 21 Mar 2025 10:33:45 +0100 Subject: [PATCH 3/4] Follow convention for error with slog.Any() Signed-off-by: Benoit Tigeot --- pkg/kube/wait.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/kube/wait.go b/pkg/kube/wait.go index de53a67f1..6a709b22d 100644 --- a/pkg/kube/wait.go +++ b/pkg/kube/wait.go @@ -120,7 +120,7 @@ func (w *waiter) waitForDeletedResources(deleted ResourceList) error { elapsed := time.Since(startTime).Round(time.Second) if err != nil { - slog.Debug("wait for resources failed", "elapsed", elapsed, "error", err) + slog.Debug("wait for resources failed", "elapsed", elapsed, slog.Any("error", err)) } else { slog.Debug("wait for resources succeeded", "elapsed", elapsed) } From 4f4c858f9c8f2e55871d80e877241abb9fa69b21 Mon Sep 17 00:00:00 2001 From: Benoit Tigeot Date: Sun, 23 Mar 2025 15:38:59 +0100 Subject: [PATCH 4/4] Ignore unused parameter Signed-off-by: Benoit Tigeot --- pkg/kube/wait.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/kube/wait.go b/pkg/kube/wait.go index 6a709b22d..71c6add53 100644 --- a/pkg/kube/wait.go +++ b/pkg/kube/wait.go @@ -108,7 +108,7 @@ func (w *waiter) waitForDeletedResources(deleted ResourceList) error { ctx, cancel := context.WithTimeout(context.Background(), w.timeout) defer cancel() - err := wait.PollUntilContextCancel(ctx, 2*time.Second, true, func(ctx context.Context) (bool, error) { + err := wait.PollUntilContextCancel(ctx, 2*time.Second, true, func(_ context.Context) (bool, error) { for _, v := range deleted { err := v.Get() if err == nil || !apierrors.IsNotFound(err) {