@@ -35,6 +35,8 @@ do_delete(time_t backup_id)
3535 parray * backup_list ,
3636 * delete_list ;
3737 pgBackup * target_backup = NULL ;
38+ int size_to_delete = 0 ;
39+ char size_to_delete_pretty [20 ];
3840
3941 /* Get complete list of backups */
4042 backup_list = catalog_get_backup_list (instance_name , INVALID_BACKUP_ID );
@@ -63,32 +65,50 @@ do_delete(time_t backup_id)
6365 pgBackup * backup = (pgBackup * ) parray_get (backup_list , i );
6466
6567 /* check if backup is descendant of delete target */
66- if (is_parent (target_backup -> start_time , backup , false))
68+ if (is_parent (target_backup -> start_time , backup , true))
69+ {
6770 parray_append (delete_list , backup );
71+
72+ elog (LOG , "Backup %s %s be deleted" ,
73+ base36enc (backup -> start_time ), dry_run ? "can" :"will" );
74+
75+ size_to_delete += backup -> data_bytes ;
76+ if (backup -> stream )
77+ size_to_delete += backup -> wal_bytes ;
78+ }
6879 }
69- parray_append (delete_list , target_backup );
7080
71- /* Lock marked for delete backups */
72- catalog_lock_backup_list (delete_list , parray_num (delete_list ) - 1 , 0 );
81+ /* Report the resident size to delete */
82+ if (size_to_delete >= 0 )
83+ {
84+ pretty_size (size_to_delete , size_to_delete_pretty , lengthof (size_to_delete_pretty ));
85+ elog (INFO , "Resident data size to free by delete of backup %s : %s" ,
86+ base36enc (target_backup -> start_time ), size_to_delete_pretty );
87+ }
7388
74- /* Delete backups from the end of list */
75- for (i = (int ) parray_num (delete_list ) - 1 ; i >= 0 ; i -- )
89+ if (!dry_run )
7690 {
77- pgBackup * backup = (pgBackup * ) parray_get (delete_list , (size_t ) i );
91+ /* Lock marked for delete backups */
92+ catalog_lock_backup_list (delete_list , parray_num (delete_list ) - 1 , 0 );
7893
79- if (interrupted )
80- elog (ERROR , "interrupted during delete backup" );
94+ /* Delete backups from the end of list */
95+ for (i = (int ) parray_num (delete_list ) - 1 ; i >= 0 ; i -- )
96+ {
97+ pgBackup * backup = (pgBackup * ) parray_get (delete_list , (size_t ) i );
8198
82- delete_backup_files ( backup );
83- }
99+ if ( interrupted )
100+ elog ( ERROR , "interrupted during delete backup" );
84101
85- parray_free (delete_list );
102+ delete_backup_files (backup );
103+ }
104+ }
86105
87106 /* Clean WAL segments */
88107 if (delete_wal )
89- do_retention_wal (false );
108+ do_retention_wal (dry_run );
90109
91110 /* cleanup */
111+ parray_free (delete_list );
92112 parray_walk (backup_list , pgBackupFree );
93113 parray_free (backup_list );
94114}
0 commit comments