Skip to content

Commit dbf5233

Browse files
committed
Refactoring. Use instanceState instead of global variable instance_name
1 parent cc58553 commit dbf5233

File tree

10 files changed

+83
-66
lines changed

10 files changed

+83
-66
lines changed

src/backup.c

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ static void backup_cleanup(bool fatal, void *userdata);
4747

4848
static void *backup_files(void *arg);
4949

50-
static void do_backup_instance(PGconn *backup_conn, PGNodeInfo *nodeInfo, bool no_sync, bool backup_logs);
50+
static void do_backup_pg(PGconn *backup_conn, PGNodeInfo *nodeInfo, bool no_sync, bool backup_logs);
5151

5252
static void pg_start_backup(const char *label, bool smooth, pgBackup *backup,
5353
PGNodeInfo *nodeInfo, PGconn *conn);
@@ -92,7 +92,7 @@ backup_stopbackup_callback(bool fatal, void *userdata)
9292
* Move files from 'pgdata' to a subdirectory in backup catalog.
9393
*/
9494
static void
95-
do_backup_instance(PGconn *backup_conn, PGNodeInfo *nodeInfo, bool no_sync, bool backup_logs)
95+
do_backup_pg(PGconn *backup_conn, PGNodeInfo *nodeInfo, bool no_sync, bool backup_logs)
9696
{
9797
int i;
9898
char external_prefix[MAXPGPATH]; /* Temp value. Used as template */
@@ -724,7 +724,7 @@ pgdata_basic_setup(ConnectionOptions conn_opt, PGNodeInfo *nodeInfo)
724724
* Entry point of pg_probackup BACKUP subcommand.
725725
*/
726726
int
727-
do_backup(pgSetBackupParams *set_backup_params,
727+
do_backup(InstanceState *instanceState, pgSetBackupParams *set_backup_params,
728728
bool no_validate, bool no_sync, bool backup_logs)
729729
{
730730
PGconn *backup_conn = NULL;
@@ -740,7 +740,7 @@ do_backup(pgSetBackupParams *set_backup_params,
740740
current.external_dir_str = instance_config.external_dir_str;
741741

742742
/* Create backup directory and BACKUP_CONTROL_FILE */
743-
pgBackupCreateDir(&current, backup_instance_path);
743+
pgBackupCreateDir(&current, instanceState->instance_backup_subdir_path);
744744

745745
if (!instance_config.pgdata)
746746
elog(ERROR, "required parameter not specified: PGDATA "
@@ -758,7 +758,7 @@ do_backup(pgSetBackupParams *set_backup_params,
758758

759759
elog(INFO, "Backup start, pg_probackup version: %s, instance: %s, backup ID: %s, backup mode: %s, "
760760
"wal mode: %s, remote: %s, compress-algorithm: %s, compress-level: %i",
761-
PROGRAM_VERSION, instance_name, base36enc(current.backup_id), pgBackupGetBackupMode(&current, false),
761+
PROGRAM_VERSION, instanceState->instance_name, base36enc(current.backup_id), pgBackupGetBackupMode(&current, false),
762762
current.stream ? "STREAM" : "ARCHIVE", IsSshProtocol() ? "true" : "false",
763763
deparse_compress_alg(current.compress_alg), current.compress_level);
764764

@@ -824,7 +824,7 @@ do_backup(pgSetBackupParams *set_backup_params,
824824
add_note(&current, set_backup_params->note);
825825

826826
/* backup data */
827-
do_backup_instance(backup_conn, &nodeInfo, no_sync, backup_logs);
827+
do_backup_pg(backup_conn, &nodeInfo, no_sync, backup_logs);
828828
pgut_atexit_pop(backup_cleanup, NULL);
829829

830830
/* compute size of wal files of this backup stored in the archive */
@@ -879,7 +879,7 @@ do_backup(pgSetBackupParams *set_backup_params,
879879
* which are expired according to retention policies
880880
*/
881881
if (delete_expired || merge_expired || delete_wal)
882-
do_retention();
882+
do_retention(instanceState);
883883

884884
return 0;
885885
}

src/catalog.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ read_backup(const char *root_dir)
112112
*/
113113
void
114114
write_backup_status(pgBackup *backup, BackupStatus status,
115-
const char *instance_name, bool strict)
115+
bool strict)
116116
{
117117
pgBackup *tmp;
118118

src/delete.c

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ static bool backup_merged = false; /* At least one merge was enacted */
2929
static bool wal_deleted = false; /* At least one WAL segments was deleted */
3030

3131
void
32-
do_delete(time_t backup_id)
32+
do_delete(InstanceState *instanceState, time_t backup_id)
3333
{
3434
int i;
3535
parray *backup_list,
@@ -39,7 +39,7 @@ do_delete(time_t backup_id)
3939
char size_to_delete_pretty[20];
4040

4141
/* Get complete list of backups */
42-
backup_list = catalog_get_backup_list(instance_name, INVALID_BACKUP_ID);
42+
backup_list = catalog_get_backup_list(instanceState->instance_name, INVALID_BACKUP_ID);
4343

4444
delete_list = parray_new();
4545

@@ -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-
void do_retention(void)
126+
void do_retention(InstanceState *instanceState)
127127
{
128128
parray *backup_list = NULL;
129129
parray *to_keep_list = parray_new();
@@ -139,7 +139,7 @@ void do_retention(void)
139139
MyLocation = FIO_LOCAL_HOST;
140140

141141
/* Get a complete list of backups. */
142-
backup_list = catalog_get_backup_list(instance_name, INVALID_BACKUP_ID);
142+
backup_list = catalog_get_backup_list(instanceState->instance_name, INVALID_BACKUP_ID);
143143

144144
if (parray_num(backup_list) == 0)
145145
backup_list_is_empty = true;
@@ -750,7 +750,7 @@ delete_backup_files(pgBackup *backup)
750750
* Update STATUS to BACKUP_STATUS_DELETING in preparation for the case which
751751
* the error occurs before deleting all backup files.
752752
*/
753-
write_backup_status(backup, BACKUP_STATUS_DELETING, instance_name, false);
753+
write_backup_status(backup, BACKUP_STATUS_DELETING, false);
754754

755755
/* list files to be deleted */
756756
files = parray_new();
@@ -966,15 +966,15 @@ delete_walfiles_in_tli(XLogRecPtr keep_lsn, timelineInfo *tlinfo,
966966

967967
/* Delete all backup files and wal files of given instance. */
968968
int
969-
do_delete_instance(void)
969+
do_delete_instance(InstanceState *instanceState)
970970
{
971971
parray *backup_list;
972972
int i;
973973
char instance_config_path[MAXPGPATH];
974974

975975

976976
/* Delete all backups. */
977-
backup_list = catalog_get_backup_list(instance_name, INVALID_BACKUP_ID);
977+
backup_list = catalog_get_backup_list(instanceState->instance_name, INVALID_BACKUP_ID);
978978

979979
catalog_lock_backup_list(backup_list, 0, parray_num(backup_list) - 1, true, true);
980980

@@ -1008,7 +1008,7 @@ do_delete_instance(void)
10081008
elog(ERROR, "Can't remove \"%s\": %s", arclog_path,
10091009
strerror(errno));
10101010

1011-
elog(INFO, "Instance '%s' successfully deleted", instance_name);
1011+
elog(INFO, "Instance '%s' successfully deleted", instanceState->instance_name);
10121012
return 0;
10131013
}
10141014

src/init.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,6 @@ do_add_instance(InstanceState *instanceState, InstanceConfig *instance)
121121
/* pgdata was set through command line */
122122
do_set_config(true);
123123

124-
elog(INFO, "Instance '%s' successfully inited", instance_name);
124+
elog(INFO, "Instance '%s' successfully inited", instanceState->instance_name);
125125
return 0;
126126
}

src/merge.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ static bool is_forward_compatible(parray *parent_chain);
6868
* - Remove unnecessary files, which doesn't exist in the target backup anymore
6969
*/
7070
void
71-
do_merge(time_t backup_id)
71+
do_merge(InstanceState *instanceState, time_t backup_id)
7272
{
7373
parray *backups;
7474
parray *merge_list = parray_new();
@@ -80,13 +80,13 @@ do_merge(time_t backup_id)
8080
if (backup_id == INVALID_BACKUP_ID)
8181
elog(ERROR, "required parameter is not specified: --backup-id");
8282

83-
if (instance_name == NULL)
83+
if (instanceState == NULL)
8484
elog(ERROR, "required parameter is not specified: --instance");
8585

8686
elog(INFO, "Merge started");
8787

8888
/* Get list of all backups sorted in order of descending start time */
89-
backups = catalog_get_backup_list(instance_name, INVALID_BACKUP_ID);
89+
backups = catalog_get_backup_list(instanceState->instance_name, INVALID_BACKUP_ID);
9090

9191
/* Find destination backup first */
9292
for (i = 0; i < parray_num(backups); i++)
@@ -597,7 +597,7 @@ merge_chain(parray *parent_chain, pgBackup *full_backup, pgBackup *dest_backup)
597597
write_backup(backup, true);
598598
}
599599
else
600-
write_backup_status(backup, BACKUP_STATUS_MERGING, instance_name, true);
600+
write_backup_status(backup, BACKUP_STATUS_MERGING, true);
601601
}
602602

603603
/* Construct path to database dir: /backup_dir/instance_name/FULL/database */

src/parsexlog.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -385,7 +385,7 @@ validate_backup_wal_from_start_to_stop(pgBackup *backup,
385385
* If we don't have WAL between start_lsn and stop_lsn,
386386
* the backup is definitely corrupted. Update its status.
387387
*/
388-
write_backup_status(backup, BACKUP_STATUS_CORRUPT, instance_name, true);
388+
write_backup_status(backup, BACKUP_STATUS_CORRUPT, true);
389389

390390
elog(WARNING, "There are not enough WAL records to consistenly restore "
391391
"backup %s from START LSN: %X/%X to STOP LSN: %X/%X",

src/pg_probackup.c

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -809,7 +809,7 @@ main(int argc, char *argv[])
809809
case ADD_INSTANCE_CMD:
810810
return do_add_instance(instanceState, &instance_config);
811811
case DELETE_INSTANCE_CMD:
812-
return do_delete_instance();
812+
return do_delete_instance(instanceState);
813813
case INIT_CMD:
814814
return do_init(catalogState);
815815
case BACKUP_CMD:
@@ -821,10 +821,11 @@ main(int argc, char *argv[])
821821
elog(ERROR, "required parameter not specified: BACKUP_MODE "
822822
"(-b, --backup-mode)");
823823

824-
return do_backup(set_backup_params, no_validate, no_sync, backup_logs);
824+
return do_backup(instanceState, set_backup_params,
825+
no_validate, no_sync, backup_logs);
825826
}
826827
case RESTORE_CMD:
827-
return do_restore_or_validate(current.backup_id,
828+
return do_restore_or_validate(instanceState, current.backup_id,
828829
recovery_target_options,
829830
restore_params, no_sync);
830831
case VALIDATE_CMD:
@@ -834,11 +835,11 @@ main(int argc, char *argv[])
834835
if (datname_exclude_list || datname_include_list)
835836
elog(ERROR, "You must specify parameter (-i, --backup-id) for partial validation");
836837

837-
return do_validate_all(backup_path);
838+
return do_validate_all(catalogState, instanceState);
838839
}
839840
else
840841
/* PITR validation and, optionally, partial validation */
841-
return do_restore_or_validate(current.backup_id,
842+
return do_restore_or_validate(instanceState, current.backup_id,
842843
recovery_target_options,
843844
restore_params,
844845
no_sync);
@@ -859,13 +860,13 @@ main(int argc, char *argv[])
859860
if (delete_status)
860861
do_delete_status(&instance_config, delete_status);
861862
else
862-
do_retention();
863+
do_retention(instanceState);
863864
}
864865
else
865-
do_delete(current.backup_id);
866+
do_delete(instanceState, current.backup_id);
866867
break;
867868
case MERGE_CMD:
868-
do_merge(current.backup_id);
869+
do_merge(instanceState, current.backup_id);
869870
break;
870871
case SHOW_CONFIG_CMD:
871872
do_show_config();

src/pg_probackup.h

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,9 @@
4949
#include <pthread.h>
5050
#endif
5151

52+
/* Wrap the code that we're going to delete after refactoring in this define*/
53+
#define REFACTORE_ME
54+
5255
/* pgut client variables and full path */
5356
extern const char *PROGRAM_NAME;
5457
extern const char *PROGRAM_NAME_FULL;
@@ -808,7 +811,7 @@ extern pgBackup current;
808811
extern char** commands_args;
809812

810813
/* in backup.c */
811-
extern int do_backup(pgSetBackupParams *set_backup_params,
814+
extern int do_backup(InstanceState *instanceState, pgSetBackupParams *set_backup_params,
812815
bool no_validate, bool no_sync, bool backup_logs);
813816
extern void do_checkdb(bool need_amcheck, ConnectionOptions conn_opt,
814817
char *pgdata);
@@ -822,7 +825,8 @@ extern char *pg_ptrack_get_block(ConnectionArgs *arguments,
822825
BlockNumber blknum, size_t *result_size,
823826
int ptrack_version_num, const char *ptrack_schema);
824827
/* in restore.c */
825-
extern int do_restore_or_validate(time_t target_backup_id,
828+
extern int do_restore_or_validate(InstanceState *instanceState,
829+
time_t target_backup_id,
826830
pgRecoveryTarget *rt,
827831
pgRestoreParams *params,
828832
bool no_sync);
@@ -843,7 +847,7 @@ extern parray *read_timeline_history(const char *arclog_path, TimeLineID targetT
843847
extern bool tliIsPartOfHistory(const parray *timelines, TimeLineID tli);
844848

845849
/* in merge.c */
846-
extern void do_merge(time_t backup_id);
850+
extern void do_merge(InstanceState *instanceState, time_t backup_id);
847851
extern void merge_backups(pgBackup *backup, pgBackup *next_backup);
848852
extern void merge_chain(parray *parent_chain,
849853
pgBackup *full_backup, pgBackup *dest_backup);
@@ -872,10 +876,10 @@ extern int do_show(char *backup_catalog_path, const char *instance_name,
872876
time_t requested_backup_id, bool show_archive);
873877

874878
/* in delete.c */
875-
extern void do_delete(time_t backup_id);
879+
extern void do_delete(InstanceState *instanceState, time_t backup_id);
876880
extern void delete_backup_files(pgBackup *backup);
877-
extern void do_retention(void);
878-
extern int do_delete_instance(void);
881+
extern void do_retention(InstanceState *instanceState);
882+
extern int do_delete_instance(InstanceState *instanceState);
879883
extern void do_delete_status(InstanceConfig *instance_config, const char *status);
880884

881885
/* in fetch.c */
@@ -893,7 +897,7 @@ extern void help_command(ProbackupSubcmd const subcmd);
893897

894898
/* in validate.c */
895899
extern void pgBackupValidate(pgBackup* backup, pgRestoreParams *params);
896-
extern int do_validate_all(char *backup_catalog_path);
900+
extern int do_validate_all(CatalogState *catalogState, InstanceState *instanceState);
897901
extern int validate_one_page(Page page, BlockNumber absolute_blkno,
898902
XLogRecPtr stop_lsn, PageState *page_st,
899903
uint32 checksum_version);
@@ -912,7 +916,7 @@ extern bool validate_tablespace_map(pgBackup *backup);
912916
extern pgBackup *read_backup(const char *root_dir);
913917
extern void write_backup(pgBackup *backup, bool strict);
914918
extern void write_backup_status(pgBackup *backup, BackupStatus status,
915-
const char *instance_name, bool strict);
919+
bool strict);
916920
extern void write_backup_data_bytes(pgBackup *backup);
917921
extern bool lock_backup(pgBackup *backup, bool strict, bool exclusive);
918922

src/restore.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ set_orphan_status(parray *backups, pgBackup *parent_backup)
9494
if (backup->status == BACKUP_STATUS_OK ||
9595
backup->status == BACKUP_STATUS_DONE)
9696
{
97-
write_backup_status(backup, BACKUP_STATUS_ORPHAN, instance_name, true);
97+
write_backup_status(backup, BACKUP_STATUS_ORPHAN, true);
9898

9999
elog(WARNING,
100100
"Backup %s is orphaned because his parent %s has status: %s",
@@ -117,7 +117,7 @@ set_orphan_status(parray *backups, pgBackup *parent_backup)
117117
* Entry point of pg_probackup RESTORE and VALIDATE subcommands.
118118
*/
119119
int
120-
do_restore_or_validate(time_t target_backup_id, pgRecoveryTarget *rt,
120+
do_restore_or_validate(InstanceState *instanceState, time_t target_backup_id, pgRecoveryTarget *rt,
121121
pgRestoreParams *params, bool no_sync)
122122
{
123123
int i = 0;
@@ -136,7 +136,7 @@ do_restore_or_validate(time_t target_backup_id, pgRecoveryTarget *rt,
136136
bool backup_has_tblspc = true; /* backup contain tablespace */
137137
XLogRecPtr shift_lsn = InvalidXLogRecPtr;
138138

139-
if (instance_name == NULL)
139+
if (instanceState == NULL)
140140
elog(ERROR, "required parameter not specified: --instance");
141141

142142
if (params->is_restore)
@@ -216,7 +216,7 @@ do_restore_or_validate(time_t target_backup_id, pgRecoveryTarget *rt,
216216
elog(LOG, "%s begin.", action);
217217

218218
/* Get list of all backups sorted in order of descending start time */
219-
backups = catalog_get_backup_list(instance_name, INVALID_BACKUP_ID);
219+
backups = catalog_get_backup_list(instanceState->instance_name, INVALID_BACKUP_ID);
220220

221221
/* Find backup range we should restore or validate. */
222222
while ((i < parray_num(backups)) && !dest_backup)
@@ -364,7 +364,7 @@ do_restore_or_validate(time_t target_backup_id, pgRecoveryTarget *rt,
364364
if (backup->status == BACKUP_STATUS_OK ||
365365
backup->status == BACKUP_STATUS_DONE)
366366
{
367-
write_backup_status(backup, BACKUP_STATUS_ORPHAN, instance_name, true);
367+
write_backup_status(backup, BACKUP_STATUS_ORPHAN, true);
368368

369369
elog(WARNING, "Backup %s is orphaned because his parent %s is missing",
370370
base36enc(backup->start_time), missing_backup_id);

0 commit comments

Comments
 (0)