Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 688747f

Browse files
committed
Use proper loop in do_validate_instance() to look for a full backup
1 parent 3a1d5c4 commit 688747f

File tree

1 file changed

+15
-10
lines changed

1 file changed

+15
-10
lines changed

src/validate.c

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -246,10 +246,9 @@ do_validate_all(void)
246246
static void
247247
do_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

Comments
 (0)