@@ -123,7 +123,7 @@ do_delete(time_t backup_id)
123123 * which FULL backup should be keeped for redundancy obligation(only valid do),
124124 * but if invalid backup is not guarded by retention - it is removed
125125 */
126- int do_retention (void )
126+ void do_retention (void )
127127{
128128 parray * backup_list = NULL ;
129129 parray * to_keep_list = parray_new ();
@@ -154,7 +154,7 @@ int do_retention(void)
154154 /* Retention is disabled but we still can cleanup wal */
155155 elog (WARNING , "Retention policy is not set" );
156156 if (!delete_wal )
157- return 0 ;
157+ return ;
158158 }
159159 else
160160 /* At least one retention policy is active */
@@ -196,9 +196,6 @@ int do_retention(void)
196196 parray_free (backup_list );
197197 parray_free (to_keep_list );
198198 parray_free (to_purge_list );
199-
200- return 0 ;
201-
202199}
203200
204201/* Evaluate every backup by retention policies and populate purge and keep lists.
@@ -1024,42 +1021,58 @@ do_delete_instance(void)
10241021 return 0 ;
10251022}
10261023
1027- /* Delete all error backup files of given instance. */
1028- int
1029- do_delete_status (char * status )
1024+ /* Delete all backups of given status in instance */
1025+ void
1026+ do_delete_status (InstanceConfig * instance_config , const char * status )
10301027{
10311028 parray * backup_list ;
1032- parray * xlog_files_list ;
10331029 int i ;
1034- int rc ;
1035- char instance_config_path [MAXPGPATH ];
1036-
1037- BackupStatus status_for_delete ;
1030+ const char * pretty_status ;
1031+ int n_deleted = 0 ;
10381032
1039- status_for_delete = str2status (status );
1033+ BackupStatus status_for_delete = str2status (status );
10401034
10411035 if (status_for_delete == BACKUP_STATUS_INVALID )
1042- elog (ERROR , "Unknown '%s' value for --status option" , status );
1036+ elog (ERROR , "Unknown value for '--status' option: '%s'" , status );
1037+
1038+ /*
1039+ * User may have provided status string in lower case, but
1040+ * we should print backup statuses consistently with show command,
1041+ * so convert it.
1042+ */
1043+ pretty_status = status2str (status_for_delete );
10431044
1045+ backup_list = catalog_get_backup_list (instance_config -> name , INVALID_BACKUP_ID );
10441046
1045- /* Delete all error backups. */
1046- backup_list = catalog_get_backup_list (instance_name , INVALID_BACKUP_ID );
1047+ if (parray_num (backup_list ) == 0 )
1048+ {
1049+ elog (WARNING , "Instance '%s' has no backups" , instance_config -> name );
1050+ return ;
1051+ }
1052+
1053+ elog (INFO , "Deleting all backups with status '%s'" , pretty_status );
10471054
1055+ /* Delete all backups with specified status */
10481056 for (i = 0 ; i < parray_num (backup_list ); i ++ )
10491057 {
10501058 pgBackup * backup = (pgBackup * ) parray_get (backup_list , i );
1051- if (backup -> status == status_for_delete ){
1052- /* elog(INFO, "Delete error backup '%s' ", base36enc(backup->backup_id)); */
1053- catalog_lock_backup_list (backup_list , i , i );
1059+
1060+ if (backup -> status == status_for_delete )
1061+ {
1062+ lock_backup (backup );
10541063 delete_backup_files (backup );
1064+ n_deleted ++ ;
10551065 }
10561066 }
10571067
1068+ if (n_deleted > 0 )
1069+ elog (INFO , "Successfully deleted all backups with status '%s' from instance '%s'" ,
1070+ pretty_status , instance_config -> name );
1071+ else
1072+ elog (WARNING , "Instance '%s' has no backups with status '%s'" ,
1073+ instance_config -> name , pretty_status );
1074+
10581075 /* Cleanup */
10591076 parray_walk (backup_list , pgBackupFree );
10601077 parray_free (backup_list );
1061-
1062-
1063- elog (INFO , "Backups with status '%s' from instance '%s' successfully deleted" , status , instance_name );
1064- return 0 ;
10651078}
0 commit comments