1
0
mirror of https://github.com/postgrespro/pg_probackup.git synced 2025-01-09 14:45:47 +02:00

[Issue #150] Pinned backups should be ignored for the purpose of WAL retention fulfillment

This commit is contained in:
Grigory Smolkin 2019-11-17 11:35:53 +03:00
parent 40003490a3
commit 5f0c024422
6 changed files with 16 additions and 10 deletions

View File

@ -988,14 +988,22 @@ catalog_get_timelines(InstanceConfig *instance)
{
pgBackup *backup = parray_get(tlinfo->backups, j);
/* sanity */
if (XLogRecPtrIsInvalid(backup->start_lsn) ||
backup->tli <= 0)
continue;
/* skip invalid backups */
if (backup->status != BACKUP_STATUS_OK &&
backup->status != BACKUP_STATUS_DONE)
continue;
/* sanity */
if (XLogRecPtrIsInvalid(backup->start_lsn) ||
backup->tli <= 0)
/*
* Pinned backups should be ignored for the
* purpose of retention fulfillment, so skip them.
*/
if (backup->expire_time > 0 &&
backup->expire_time > current_time)
continue;
count++;

View File

@ -209,7 +209,6 @@ static void
do_retention_internal(parray *backup_list, parray *to_keep_list, parray *to_purge_list)
{
int i;
time_t current_time;
parray *redundancy_full_backup_list = NULL;
@ -221,9 +220,6 @@ do_retention_internal(parray *backup_list, parray *to_keep_list, parray *to_purg
/* For fancy reporting */
uint32 actual_window = 0;
/* Get current time */
current_time = time(NULL);
/* Calculate n_full_backups and days_threshold */
if (instance_config.retention_redundancy > 0)
{

View File

@ -92,6 +92,7 @@ static char *target_action = NULL;
static pgRecoveryTarget *recovery_target_options = NULL;
static pgRestoreParams *restore_params = NULL;
time_t current_time = 0;
bool restore_as_replica = false;
bool no_validate = false;
@ -267,6 +268,9 @@ main(int argc, char *argv[])
PROGRAM_NAME = get_progname(argv[0]);
PROGRAM_FULL_PATH = palloc0(MAXPGPATH);
/* Get current time */
current_time = time(NULL);
//set_pglocale_pgservice(argv[0], "pgscripts");
#if PG_VERSION_NUM >= 110000

View File

@ -282,6 +282,7 @@ typedef struct InstanceConfig
extern ConfigOption instance_options[];
extern InstanceConfig instance_config;
extern time_t current_time;
typedef struct PGNodeInfo
{

View File

@ -1101,10 +1101,8 @@ pg12_recovery_config(pgBackup *backup, bool add_include)
if (add_include)
{
time_t current_time;
char current_time_str[100];
current_time = time(NULL);
time2iso(current_time_str, lengthof(current_time_str), current_time);
snprintf(postgres_auto_path, lengthof(postgres_auto_path),

View File

@ -468,7 +468,6 @@ show_instance_plain(const char *instance_name, parray *backup_list, bool show_na
uint32 widths[SHOW_FIELDS_COUNT];
uint32 widths_sum = 0;
ShowBackendRow *rows;
time_t current_time = time(NULL);
TimeLineID parent_tli = 0;
for (i = 0; i < SHOW_FIELDS_COUNT; i++)