@@ -22,7 +22,7 @@ do_delete(time_t backup_id)
22
22
int b_index ;
23
23
int ret ;
24
24
parray * backup_list ;
25
- pgBackup * last_backup ;
25
+ pgBackup * last_backup = NULL ;
26
26
27
27
/* DATE are always required */
28
28
if (backup_id == 0 )
@@ -45,9 +45,7 @@ do_delete(time_t backup_id)
45
45
for (i = 0 ; i < parray_num (backup_list ); i ++ )
46
46
{
47
47
last_backup = (pgBackup * ) parray_get (backup_list , i );
48
- if (last_backup -> status == BACKUP_STATUS_OK &&
49
- last_backup -> start_time == backup_id
50
- )
48
+ if (last_backup -> start_time == backup_id )
51
49
goto found_backup ;
52
50
}
53
51
@@ -62,15 +60,17 @@ do_delete(time_t backup_id)
62
60
/* just do it */
63
61
pgBackupDeleteFiles (last_backup );
64
62
63
+ if (last_backup -> status == BACKUP_STATUS_ERROR )
64
+ return 0 ;
65
+
65
66
/* remove all increments after removed backup */
66
67
for (i = b_index - 1 ; i >= 0 ; i -- )
67
68
{
68
69
pgBackup * backup = (pgBackup * ) parray_get (backup_list , i );
69
70
if (backup -> backup_mode >= BACKUP_MODE_FULL )
70
71
break ;
71
- if (backup -> status == BACKUP_STATUS_OK ||
72
- backup -> backup_mode == BACKUP_MODE_DIFF_PAGE ||
73
- backup -> backup_mode == BACKUP_MODE_DIFF_PTRACK
72
+ if ((backup -> status == BACKUP_STATUS_OK || backup -> status == BACKUP_STATUS_CORRUPT ) &&
73
+ (backup -> backup_mode == BACKUP_MODE_DIFF_PAGE || backup -> backup_mode == BACKUP_MODE_DIFF_PTRACK )
74
74
)
75
75
pgBackupDeleteFiles (backup );
76
76
}
0 commit comments