From 20246998da33363cd933a3e73c1782a5dea5cab9 Mon Sep 17 00:00:00 2001 From: Dion Date: Thu, 20 Jun 2024 12:48:17 -0400 Subject: [PATCH 1/3] fix: Duplicated restores --- pkg/configuration/backuprestore/backuprestore.go | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/pkg/configuration/backuprestore/backuprestore.go b/pkg/configuration/backuprestore/backuprestore.go index b2deb9ca..122225f5 100644 --- a/pkg/configuration/backuprestore/backuprestore.go +++ b/pkg/configuration/backuprestore/backuprestore.go @@ -180,12 +180,7 @@ func (bar *BackupAndRestore) Restore(jenkinsClient jenkinsclient.Jenkins) error if err != nil { return err } - //TODO fix me because we're doing two saves unatomically - jenkins.Spec.Restore.RecoveryOnce = 0 - err = bar.Client.Update(context.TODO(), jenkins) - if err != nil { - return err - } + key := types.NamespacedName{ Namespace: jenkins.Namespace, Name: jenkins.Name, @@ -194,6 +189,12 @@ func (bar *BackupAndRestore) Restore(jenkinsClient jenkinsclient.Jenkins) error if err != nil { return err } + + jenkins.Spec.Restore.RecoveryOnce = 0 + err = bar.Client.Update(context.TODO(), jenkins) + if err != nil { + return err + } bar.Configuration.Jenkins = jenkins jenkins.Status.RestoredBackup = backupNumber From ad2c908a3e877693d6be4a9450e4b7a7f885f4e2 Mon Sep 17 00:00:00 2001 From: Dion Date: Thu, 20 Jun 2024 13:40:37 -0400 Subject: [PATCH 2/3] fix: Duplicate backups --- pkg/configuration/backuprestore/backuprestore.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/pkg/configuration/backuprestore/backuprestore.go b/pkg/configuration/backuprestore/backuprestore.go index 122225f5..ed203a55 100644 --- a/pkg/configuration/backuprestore/backuprestore.go +++ b/pkg/configuration/backuprestore/backuprestore.go @@ -224,6 +224,15 @@ func (bar *BackupAndRestore) Backup(setBackupDoneBeforePodDeletion bool) error { _, _, err := bar.Exec(podName, jenkins.Spec.Backup.ContainerName, command) if err == nil { + key := types.NamespacedName{ + Namespace: jenkins.Namespace, + Name: jenkins.Name, + } + err = bar.Client.Get(context.TODO(), key, jenkins) + if err != nil { + return err + } + bar.logger.V(log.VDebug).Info(fmt.Sprintf("Backup completed '%d', updating status", backupNumber)) if jenkins.Status.RestoredBackup == 0 { jenkins.Status.RestoredBackup = backupNumber