From 68a0313d50a8dd70e8d22b0011cac35d11caa1aa Mon Sep 17 00:00:00 2001 From: Natalia Marukovich Date: Mon, 19 Jan 2026 11:30:08 +0100 Subject: [PATCH 1/6] K8SPG-740 fix error message --- percona/controller/pgcluster/backup.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/percona/controller/pgcluster/backup.go b/percona/controller/pgcluster/backup.go index 37d19b3557..0c1a7f105d 100644 --- a/percona/controller/pgcluster/backup.go +++ b/percona/controller/pgcluster/backup.go @@ -2,6 +2,8 @@ package pgcluster import ( "context" + "github.com/percona/percona-postgresql-operator/v2/internal/controller/postgrescluster" + "k8s.io/apimachinery/pkg/api/meta" "github.com/pkg/errors" batchv1 "k8s.io/api/batch/v1" @@ -27,6 +29,13 @@ func (r *PGClusterReconciler) reconcileBackups(ctx context.Context, cr *v2.Perco return errors.Wrap(err, "reconcile backup jobs") } + repoCondition := meta.FindStatusCondition(cr.Status.Conditions, postgrescluster.ConditionRepoHostReady) + if repoCondition == nil || repoCondition.Status != metav1.ConditionTrue { + log.Info("pgBackRest repo host not ready, skipping backup cleanup") + return nil + + } + if err := r.cleanupOutdatedBackups(ctx, cr); err != nil { // If the user has invalid pgbackrest credentials, this could stop the reconcile. // We should just print an error message. From c6ee6312912f1b25f8b375035b5cd7d53374d61e Mon Sep 17 00:00:00 2001 From: Natalia Marukovich Date: Mon, 19 Jan 2026 11:37:05 +0100 Subject: [PATCH 2/6] fix import --- percona/controller/pgcluster/backup.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/percona/controller/pgcluster/backup.go b/percona/controller/pgcluster/backup.go index 0c1a7f105d..53b6028124 100644 --- a/percona/controller/pgcluster/backup.go +++ b/percona/controller/pgcluster/backup.go @@ -2,18 +2,18 @@ package pgcluster import ( "context" - "github.com/percona/percona-postgresql-operator/v2/internal/controller/postgrescluster" - "k8s.io/apimachinery/pkg/api/meta" "github.com/pkg/errors" batchv1 "k8s.io/api/batch/v1" k8serrors "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/api/meta" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/types" "k8s.io/client-go/util/retry" "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil" + "github.com/percona/percona-postgresql-operator/v2/internal/controller/postgrescluster" "github.com/percona/percona-postgresql-operator/v2/internal/logging" "github.com/percona/percona-postgresql-operator/v2/internal/naming" "github.com/percona/percona-postgresql-operator/v2/percona/controller" From 5b9e2d2a2df52d474abc78755c3449118eb012aa Mon Sep 17 00:00:00 2001 From: Natalia Marukovich Date: Tue, 20 Jan 2026 12:36:57 +0100 Subject: [PATCH 3/6] fix PR comments --- percona/controller/pgcluster/backup.go | 1 - 1 file changed, 1 deletion(-) diff --git a/percona/controller/pgcluster/backup.go b/percona/controller/pgcluster/backup.go index 53b6028124..71eb41b580 100644 --- a/percona/controller/pgcluster/backup.go +++ b/percona/controller/pgcluster/backup.go @@ -33,7 +33,6 @@ func (r *PGClusterReconciler) reconcileBackups(ctx context.Context, cr *v2.Perco if repoCondition == nil || repoCondition.Status != metav1.ConditionTrue { log.Info("pgBackRest repo host not ready, skipping backup cleanup") return nil - } if err := r.cleanupOutdatedBackups(ctx, cr); err != nil { From e147f2277e275e005839a95f03e23f662c363df3 Mon Sep 17 00:00:00 2001 From: Natalia Marukovich Date: Mon, 2 Feb 2026 16:44:19 +0100 Subject: [PATCH 4/6] fix PR comments --- percona/controller/pgcluster/backup.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/percona/controller/pgcluster/backup.go b/percona/controller/pgcluster/backup.go index 71eb41b580..ae3402125c 100644 --- a/percona/controller/pgcluster/backup.go +++ b/percona/controller/pgcluster/backup.go @@ -29,12 +29,6 @@ func (r *PGClusterReconciler) reconcileBackups(ctx context.Context, cr *v2.Perco return errors.Wrap(err, "reconcile backup jobs") } - repoCondition := meta.FindStatusCondition(cr.Status.Conditions, postgrescluster.ConditionRepoHostReady) - if repoCondition == nil || repoCondition.Status != metav1.ConditionTrue { - log.Info("pgBackRest repo host not ready, skipping backup cleanup") - return nil - } - if err := r.cleanupOutdatedBackups(ctx, cr); err != nil { // If the user has invalid pgbackrest credentials, this could stop the reconcile. // We should just print an error message. @@ -55,6 +49,12 @@ func (r *PGClusterReconciler) cleanupOutdatedBackups(ctx context.Context, cr *v2 return nil } + repoCondition := meta.FindStatusCondition(cr.Status.Conditions, postgrescluster.ConditionRepoHostReady) + if repoCondition == nil || repoCondition.Status != metav1.ConditionTrue { + log.Info("pgBackRest repo host not ready, skipping backup cleanup") + return nil + } + for _, repo := range cr.Spec.Backups.PGBackRest.Repos { var info pgbackrest.InfoOutput From 507c7162578d93ce99e3b32b952743fc71916f1b Mon Sep 17 00:00:00 2001 From: Natalia Marukovich Date: Tue, 10 Feb 2026 16:48:38 +0100 Subject: [PATCH 5/6] fix condition --- percona/controller/pgcluster/backup.go | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/percona/controller/pgcluster/backup.go b/percona/controller/pgcluster/backup.go index ae3402125c..a83f835c54 100644 --- a/percona/controller/pgcluster/backup.go +++ b/percona/controller/pgcluster/backup.go @@ -49,13 +49,16 @@ func (r *PGClusterReconciler) cleanupOutdatedBackups(ctx context.Context, cr *v2 return nil } - repoCondition := meta.FindStatusCondition(cr.Status.Conditions, postgrescluster.ConditionRepoHostReady) - if repoCondition == nil || repoCondition.Status != metav1.ConditionTrue { - log.Info("pgBackRest repo host not ready, skipping backup cleanup") - return nil - } - for _, repo := range cr.Spec.Backups.PGBackRest.Repos { + + if repo.Volume != nil { + repoCondition := meta.FindStatusCondition(cr.Status.Conditions, postgrescluster.ConditionRepoHostReady) + if repoCondition == nil || repoCondition.Status != metav1.ConditionTrue { + log.Info("pgBackRest repo host not ready, skipping backup cleanup", "repo", repo.Name) + continue + } + } + var info pgbackrest.InfoOutput pbList, err := listPGBackups(ctx, r.Client, cr, repo.Name) From 948c79395b979751c1ed19e3a8e60c723e018ab2 Mon Sep 17 00:00:00 2001 From: Natalia Marukovich Date: Tue, 10 Feb 2026 16:50:11 +0100 Subject: [PATCH 6/6] fix condition delete space --- percona/controller/pgcluster/backup.go | 1 - 1 file changed, 1 deletion(-) diff --git a/percona/controller/pgcluster/backup.go b/percona/controller/pgcluster/backup.go index a83f835c54..06c680e258 100644 --- a/percona/controller/pgcluster/backup.go +++ b/percona/controller/pgcluster/backup.go @@ -50,7 +50,6 @@ func (r *PGClusterReconciler) cleanupOutdatedBackups(ctx context.Context, cr *v2 } for _, repo := range cr.Spec.Backups.PGBackRest.Repos { - if repo.Volume != nil { repoCondition := meta.FindStatusCondition(cr.Status.Conditions, postgrescluster.ConditionRepoHostReady) if repoCondition == nil || repoCondition.Status != metav1.ConditionTrue {