Skip to content

Commit 453b7e5

Browse files
pooknullhors
andauthored
K8SPG-638: handle get latest backup errors on cluster init (#954)
https://perconadev.atlassian.net/browse/K8SPG-638 Co-authored-by: Viacheslav Sarzhan <slava.sarzhan@percona.com>
1 parent 0df722a commit 453b7e5

File tree

1 file changed

+19
-1
lines changed

1 file changed

+19
-1
lines changed

percona/watcher/wal.go

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,10 @@ func WatchCommitTimestamps(ctx context.Context, cli client.Client, eventChan cha
6464

6565
latestBackup, err := getLatestBackup(ctx, cli, cr)
6666
if err != nil {
67-
log.Error(err, "get latest backup")
67+
if localCr.Status.State != pgv2.AppStateInit || (!errors.Is(err, errRunningBackup) && !errors.Is(err, errNoBackups)) {
68+
log.Error(err, "get latest backup")
69+
}
70+
6871
continue
6972
}
7073

@@ -104,6 +107,11 @@ func WatchCommitTimestamps(ctx context.Context, cli client.Client, eventChan cha
104107
}
105108
}
106109

110+
var (
111+
errRunningBackup = errors.New("backups are running")
112+
errNoBackups = errors.New("no backups found")
113+
)
114+
107115
func getLatestBackup(ctx context.Context, cli client.Client, cr *pgv2.PerconaPGCluster) (*pgv2.PerconaPGBackup, error) {
108116
backupList := &pgv2.PerconaPGBackupList{}
109117
err := cli.List(ctx, backupList, &client.ListOptions{
@@ -117,15 +125,25 @@ func getLatestBackup(ctx context.Context, cli client.Client, cr *pgv2.PerconaPGC
117125
return nil, err
118126
}
119127

128+
if len(backupList.Items) == 0 {
129+
return nil, errNoBackups
130+
}
131+
120132
latest := &pgv2.PerconaPGBackup{}
133+
runningBackupExists := false
121134
for _, backup := range backupList.Items {
122135
backup := backup
123136
if latest.Status.CompletedAt == nil || backup.Status.CompletedAt.After(latest.Status.CompletedAt.Time) {
124137
latest = &backup
138+
} else if backup.Status.State == pgv2.BackupStarting || backup.Status.State == pgv2.BackupRunning {
139+
runningBackupExists = true
125140
}
126141
}
127142

128143
if latest.Status.CompletedAt == nil {
144+
if runningBackupExists {
145+
return nil, errRunningBackup
146+
}
129147
return nil, errors.New("no completed backups found")
130148
}
131149

0 commit comments

Comments
 (0)