@@ -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+
107115func 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