@@ -246,10 +246,9 @@ do_validate_all(void)
246246static void
247247do_validate_instance (void )
248248{
249- int i , j ;
249+ int i ;
250250 parray * backups ;
251251 pgBackup * current_backup = NULL ;
252- pgBackup * base_full_backup = NULL ;
253252
254253 elog (INFO , "Validate backups of the instance '%s'" , instance_name );
255254
@@ -265,24 +264,25 @@ do_validate_instance(void)
265264 for (i = 0 ; i < parray_num (backups ); i ++ )
266265 {
267266 char * backup_id ;
267+ pgBackup * base_full_backup = NULL ;
268268
269269 current_backup = (pgBackup * ) parray_get (backups , i );
270270 backup_id = base36enc (current_backup -> start_time );
271271
272272 elog (INFO , "Validate backup %s" , backup_id );
273273
274- free (backup_id );
275-
276274 if (current_backup -> backup_mode != BACKUP_MODE_FULL )
277275 {
278- j = i + 1 ;
279- do
276+ for (int j = i + 1 ; j < parray_num (backups ); j ++ )
280277 {
281- base_full_backup = (pgBackup * ) parray_get (backups , j );
282- j ++ ;
278+ pgBackup * backup = (pgBackup * ) parray_get (backups , j );
279+
280+ if (backup -> backup_mode == BACKUP_MODE_FULL )
281+ {
282+ base_full_backup = backup ;
283+ break ;
284+ }
283285 }
284- while (base_full_backup -> backup_mode != BACKUP_MODE_FULL
285- && j < parray_num (backups ));
286286 }
287287 else
288288 base_full_backup = current_backup ;
@@ -292,13 +292,18 @@ do_validate_instance(void)
292292 /* There is no point in wal validation for corrupted backup */
293293 if (current_backup -> status == BACKUP_STATUS_OK )
294294 {
295+ if (base_full_backup == NULL )
296+ elog (ERROR , "Valid full backup for backup %s is not found." ,
297+ backup_id );
295298 /* Validate corresponding WAL files */
296299 validate_wal (current_backup , arclog_path , 0 ,
297300 0 , base_full_backup -> tli );
298301 }
299302
300303 if (current_backup -> status != BACKUP_STATUS_OK )
301304 corrupted_backup_found = true;
305+
306+ free (backup_id );
302307 }
303308
304309 /* cleanup */
0 commit comments