From 552c396bc49dd7683e9c8914f7e3abf69fa3536a Mon Sep 17 00:00:00 2001 From: Stefan Prodan Date: Fri, 7 Jan 2022 10:17:25 +0200 Subject: [PATCH] Log the error when tmp cleanup fails Signed-off-by: Stefan Prodan --- api/v1beta1/zz_generated.deepcopy.go | 1 + controllers/bucket_controller.go | 9 ++++++++- controllers/gitrepository_controller.go | 8 +++++++- controllers/helmchart_controller.go | 6 +++++- controllers/helmrepository_controller.go | 7 ++++++- 5 files changed, 27 insertions(+), 4 deletions(-) diff --git a/api/v1beta1/zz_generated.deepcopy.go b/api/v1beta1/zz_generated.deepcopy.go index 443f17a31..d5e4f4892 100644 --- a/api/v1beta1/zz_generated.deepcopy.go +++ b/api/v1beta1/zz_generated.deepcopy.go @@ -1,3 +1,4 @@ +//go:build !ignore_autogenerated // +build !ignore_autogenerated /* diff --git a/controllers/bucket_controller.go b/controllers/bucket_controller.go index 9d194be72..95ac70293 100644 --- a/controllers/bucket_controller.go +++ b/controllers/bucket_controller.go @@ -177,14 +177,21 @@ func (r *BucketReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctr } func (r *BucketReconciler) reconcile(ctx context.Context, bucket sourcev1.Bucket) (sourcev1.Bucket, error) { + log := ctrl.LoggerFrom(ctx) var err error var sourceBucket sourcev1.Bucket + tempDir, err := os.MkdirTemp("", bucket.Name) if err != nil { err = fmt.Errorf("tmp dir error: %w", err) return sourcev1.BucketNotReady(bucket, sourcev1.StorageOperationFailedReason, err.Error()), err } - defer os.RemoveAll(tempDir) + defer func() { + if err := os.RemoveAll(tempDir); err != nil { + log.Error(err, "failed to remove working directory", "path", tempDir) + } + }() + if bucket.Spec.Provider == sourcev1.GoogleBucketProvider { sourceBucket, err = r.reconcileWithGCP(ctx, bucket, tempDir) if err != nil { diff --git a/controllers/gitrepository_controller.go b/controllers/gitrepository_controller.go index 9a7ad5d9b..7568c4433 100644 --- a/controllers/gitrepository_controller.go +++ b/controllers/gitrepository_controller.go @@ -220,13 +220,19 @@ func (r *GitRepositoryReconciler) checkDependencies(repository sourcev1.GitRepos } func (r *GitRepositoryReconciler) reconcile(ctx context.Context, repository sourcev1.GitRepository) (sourcev1.GitRepository, error) { + log := ctrl.LoggerFrom(ctx) + // create tmp dir for the Git clone tmpGit, err := os.MkdirTemp("", repository.Name) if err != nil { err = fmt.Errorf("tmp dir error: %w", err) return sourcev1.GitRepositoryNotReady(repository, sourcev1.StorageOperationFailedReason, err.Error()), err } - defer os.RemoveAll(tmpGit) + defer func() { + if err := os.RemoveAll(tmpGit); err != nil { + log.Error(err, "failed to remove working directory", "path", tmpGit) + } + }() // Configure auth options using secret var authOpts *git.AuthOptions diff --git a/controllers/helmchart_controller.go b/controllers/helmchart_controller.go index f67e2c442..0f5dbeb1a 100644 --- a/controllers/helmchart_controller.go +++ b/controllers/helmchart_controller.go @@ -209,7 +209,11 @@ func (r *HelmChartReconciler) Reconcile(ctx context.Context, req ctrl.Request) ( r.recordReadiness(ctx, chart) return ctrl.Result{Requeue: true}, err } - defer os.RemoveAll(workDir) + defer func() { + if err := os.RemoveAll(workDir); err != nil { + log.Error(err, "failed to remove working directory", "path", workDir) + } + }() // Perform the reconciliation for the chart source type var reconciledChart sourcev1.HelmChart diff --git a/controllers/helmrepository_controller.go b/controllers/helmrepository_controller.go index 989c7d2fe..b17d75e7f 100644 --- a/controllers/helmrepository_controller.go +++ b/controllers/helmrepository_controller.go @@ -173,6 +173,7 @@ func (r *HelmRepositoryReconciler) Reconcile(ctx context.Context, req ctrl.Reque } func (r *HelmRepositoryReconciler) reconcile(ctx context.Context, repo sourcev1.HelmRepository) (sourcev1.HelmRepository, error) { + log := ctrl.LoggerFrom(ctx) clientOpts := []helmgetter.Option{ helmgetter.WithURL(repo.Spec.URL), helmgetter.WithTimeout(repo.Spec.Timeout.Duration), @@ -196,7 +197,11 @@ func (r *HelmRepositoryReconciler) reconcile(ctx context.Context, repo sourcev1. err = fmt.Errorf("failed to create temporary working directory for credentials: %w", err) return sourcev1.HelmRepositoryNotReady(repo, sourcev1.AuthenticationFailedReason, err.Error()), err } - defer os.RemoveAll(authDir) + defer func() { + if err := os.RemoveAll(authDir); err != nil { + log.Error(err, "failed to remove working directory", "path", authDir) + } + }() opts, err := getter.ClientOptionsFromSecret(authDir, secret) if err != nil {