Skip to content

Commit 43efdd3

Browse files
committed
code cleanup
1 parent 04105e8 commit 43efdd3

File tree

1 file changed

+34
-39
lines changed

1 file changed

+34
-39
lines changed

src/backup.c

Lines changed: 34 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ static void backup_cleanup(bool fatal, void *userdata);
7777
static void backup_disconnect(bool fatal, void *userdata);
7878

7979
static void backup_files(void *arg);
80-
static void do_backup_database(parray *backup_list);
80+
static void do_backup_instance(void);
8181

8282
static void pg_start_backup(const char *label, bool smooth, pgBackup *backup);
8383
static void pg_switch_wal(PGconn *conn);
@@ -116,10 +116,11 @@ static void confirm_block_size(const char *name, int blcksz);
116116

117117

118118
/*
119-
* Take a backup of database.
119+
* Take a backup of a single postgresql instance.
120+
* Move files from 'pgdata' to a subdirectory in 'backup_path'.
120121
*/
121122
static void
122-
do_backup_database(parray *backup_list)
123+
do_backup_instance(void)
123124
{
124125
size_t i;
125126
char database_path[MAXPGPATH];
@@ -144,15 +145,32 @@ do_backup_database(parray *backup_list)
144145

145146
/*
146147
* In incremental backup mode ensure that already-validated
147-
* backup on current timeline exists.
148+
* backup on current timeline exists and get its filelist.
148149
*/
149150
if (current.backup_mode == BACKUP_MODE_DIFF_PAGE ||
150151
current.backup_mode == BACKUP_MODE_DIFF_PTRACK)
151152
{
153+
parray *backup_list;
154+
/* get list of backups already taken */
155+
backup_list = catalog_get_backup_list(INVALID_BACKUP_ID);
156+
if (backup_list == NULL)
157+
elog(ERROR, "Failed to get backup list.");
158+
152159
prev_backup = catalog_get_last_data_backup(backup_list, current.tli);
153160
if (prev_backup == NULL)
154161
elog(ERROR, "Valid backup on current timeline is not found. "
155162
"Create new FULL backup before an incremental one.");
163+
parray_free(backup_list);
164+
165+
pgBackupGetPath(prev_backup, prev_backup_filelist_path, lengthof(prev_backup_filelist_path),
166+
DATABASE_FILE_LIST);
167+
prev_backup_filelist = dir_read_file_list(pgdata, prev_backup_filelist_path);
168+
169+
/* If lsn is not NULL, only pages with higher lsn will be copied. */
170+
prev_backup_start_lsn = prev_backup->start_lsn;
171+
current.parent_backup = prev_backup->start_time;
172+
173+
pgBackupWriteBackupControlFile(&current);
156174
}
157175

158176
/* Clear ptrack files for FULL and PAGE backup */
@@ -200,24 +218,6 @@ do_backup_database(parray *backup_list)
200218
pthread_mutex_unlock(&start_stream_mut);
201219
}
202220

203-
/*
204-
* To take incremental backup get the filelist of the last completed database
205-
*/
206-
if (current.backup_mode == BACKUP_MODE_DIFF_PAGE ||
207-
current.backup_mode == BACKUP_MODE_DIFF_PTRACK)
208-
{
209-
Assert(prev_backup);
210-
pgBackupGetPath(prev_backup, prev_backup_filelist_path, lengthof(prev_backup_filelist_path),
211-
DATABASE_FILE_LIST);
212-
prev_backup_filelist = dir_read_file_list(pgdata, prev_backup_filelist_path);
213-
214-
/* If lsn is not NULL, only pages with higher lsn will be copied. */
215-
prev_backup_start_lsn = prev_backup->start_lsn;
216-
217-
current.parent_backup = prev_backup->start_time;
218-
pgBackupWriteBackupControlFile(&current);
219-
}
220-
221221
/* initialize backup list */
222222
backup_files_list = parray_new();
223223

@@ -394,9 +394,6 @@ do_backup_database(parray *backup_list)
394394
int
395395
do_backup(void)
396396
{
397-
parray *backup_list;
398-
bool is_ptrack_support;
399-
400397
/* PGDATA and BACKUP_MODE are always required */
401398
if (pgdata == NULL)
402399
elog(ERROR, "required parameter not specified: PGDATA "
@@ -422,15 +419,18 @@ do_backup(void)
422419
current.stream = stream_wal;
423420

424421
/* ptrack backup checks */
425-
is_ptrack_support = pg_ptrack_support();
426-
if (current.backup_mode == BACKUP_MODE_DIFF_PTRACK && !is_ptrack_support)
427-
elog(ERROR, "This PostgreSQL instance does not support ptrack");
428-
429-
if (is_ptrack_support)
422+
if (current.backup_mode == BACKUP_MODE_DIFF_PTRACK)
430423
{
431-
is_ptrack_enable = pg_ptrack_enable();
432-
if(current.backup_mode == BACKUP_MODE_DIFF_PTRACK && !is_ptrack_enable)
433-
elog(ERROR, "Ptrack is disabled");
424+
bool is_ptrack_support = pg_ptrack_support();
425+
426+
if (!is_ptrack_support)
427+
elog(ERROR, "This PostgreSQL instance does not support ptrack");
428+
else
429+
{
430+
is_ptrack_enable = pg_ptrack_enable();
431+
if(!is_ptrack_enable)
432+
elog(ERROR, "Ptrack is disabled");
433+
}
434434
}
435435

436436
/* archiving check */
@@ -460,11 +460,6 @@ do_backup(void)
460460
*/
461461
check_system_identifiers();
462462

463-
/* get list of backups already taken */
464-
backup_list = catalog_get_backup_list(INVALID_BACKUP_ID);
465-
if (backup_list == NULL)
466-
elog(ERROR, "Failed to get backup list.");
467-
468463
elog(LOG, "Backup start. backup-mode = %s, stream = %s",
469464
pgBackupGetBackupMode(&current), current.stream ? "true" : "false");
470465

@@ -483,7 +478,7 @@ do_backup(void)
483478
pgut_atexit_push(backup_cleanup, NULL);
484479

485480
/* backup data */
486-
do_backup_database(backup_list);
481+
do_backup_instance();
487482
pgut_atexit_pop(backup_cleanup, NULL);
488483

489484
/* compute size of wal files of this backup stored in the archive */

0 commit comments

Comments
 (0)