@@ -64,7 +64,10 @@ func WatchCommitTimestamps(ctx context.Context, cli client.Client, eventChan cha
64
64
65
65
latestBackup , err := getLatestBackup (ctx , cli , cr )
66
66
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
+
68
71
continue
69
72
}
70
73
@@ -104,6 +107,11 @@ func WatchCommitTimestamps(ctx context.Context, cli client.Client, eventChan cha
104
107
}
105
108
}
106
109
110
+ var (
111
+ errRunningBackup = errors .New ("backups are running" )
112
+ errNoBackups = errors .New ("no backups found" )
113
+ )
114
+
107
115
func getLatestBackup (ctx context.Context , cli client.Client , cr * pgv2.PerconaPGCluster ) (* pgv2.PerconaPGBackup , error ) {
108
116
backupList := & pgv2.PerconaPGBackupList {}
109
117
err := cli .List (ctx , backupList , & client.ListOptions {
@@ -117,15 +125,25 @@ func getLatestBackup(ctx context.Context, cli client.Client, cr *pgv2.PerconaPGC
117
125
return nil , err
118
126
}
119
127
128
+ if len (backupList .Items ) == 0 {
129
+ return nil , errNoBackups
130
+ }
131
+
120
132
latest := & pgv2.PerconaPGBackup {}
133
+ runningBackupExists := false
121
134
for _ , backup := range backupList .Items {
122
135
backup := backup
123
136
if latest .Status .CompletedAt == nil || backup .Status .CompletedAt .After (latest .Status .CompletedAt .Time ) {
124
137
latest = & backup
138
+ } else if backup .Status .State == pgv2 .BackupStarting || backup .Status .State == pgv2 .BackupRunning {
139
+ runningBackupExists = true
125
140
}
126
141
}
127
142
128
143
if latest .Status .CompletedAt == nil {
144
+ if runningBackupExists {
145
+ return nil , errRunningBackup
146
+ }
129
147
return nil , errors .New ("no completed backups found" )
130
148
}
131
149
0 commit comments