From 12cc3a1491452d49c9d2e004f3e33fac96ed7124 Mon Sep 17 00:00:00 2001 From: Anastasia Date: Wed, 19 Apr 2017 12:01:10 +0300 Subject: [PATCH] Format change backup.conf is renamed to backup.control --- backup.c | 19 +++++------ catalog.c | 90 ++++++++++++++++++++++---------------------------- delete.c | 2 +- pg_probackup.h | 7 ++-- show.c | 7 ++-- validate.c | 2 +- 6 files changed, 56 insertions(+), 71 deletions(-) diff --git a/backup.c b/backup.c index 90bcc66f..277f1b90 100644 --- a/backup.c +++ b/backup.c @@ -26,6 +26,7 @@ #include "streamutil.h" #include "receivelog.h" +static const char *backupModes[] = {"", "PAGE", "PTRACK", "FULL"}; static int standby_message_timeout = 10 * 1000; /* 10 sec = default */ static XLogRecPtr stop_backup_lsn = InvalidXLogRecPtr; const char *progname = "pg_probackup"; @@ -191,7 +192,7 @@ do_backup_database(parray *backup_list) prev_backup_start_lsn = &prev_backup->start_lsn; current.parent_backup = prev_backup->start_time; - pgBackupWriteConf(¤t); + pgBackupWriteBackupControlFile(¤t); } /* initialize backup list */ @@ -417,19 +418,17 @@ do_backup(void) */ check_system_identifiers(); - elog(LOG, "Backup start"); - /* Show configuration actually used */ - if (verbose) - pgBackupWriteConfigSection(stderr, ¤t); + elog(LOG, "Backup start. backup-mode = %s+%s", + backupModes[current.backup_mode], current.stream?"STREAM":"ARCHIVE"); /* Start backup. Update backup status. */ current.status = BACKUP_STATUS_RUNNING; current.start_time = time(NULL); - /* Create backup directory and BACKUP_CONF_FILE */ + /* Create backup directory and BACKUP_CONTROL_FILE */ if (pgBackupCreateDir(¤t)) elog(ERROR, "cannot create backup directory"); - pgBackupWriteConf(¤t); + pgBackupWriteBackupControlFile(¤t); elog(LOG, "Backup destination is initialized"); @@ -448,7 +447,7 @@ do_backup(void) /* Backup is done. Update backup status */ current.end_time = time(NULL); current.status = BACKUP_STATUS_DONE; - pgBackupWriteConf(¤t); + pgBackupWriteBackupControlFile(¤t); elog(LOG, "Backup completed. Total bytes : " INT64_FORMAT "", current.data_bytes); @@ -940,7 +939,7 @@ backup_cleanup(bool fatal, void *userdata) } /* - * Update status of backup in BACKUP_CONF_FILE to ERROR. + * Update status of backup in BACKUP_CONTROL_FILE to ERROR. * end_time != 0 means backup finished */ if (current.status == BACKUP_STATUS_RUNNING && current.end_time == 0) @@ -948,7 +947,7 @@ backup_cleanup(bool fatal, void *userdata) elog(LOG, "Backup is running, update its status to ERROR"); current.end_time = time(NULL); current.status = BACKUP_STATUS_ERROR; - pgBackupWriteConf(¤t); + pgBackupWriteBackupControlFile(¤t); } } diff --git a/catalog.c b/catalog.c index a1f43446..834431ac 100644 --- a/catalog.c +++ b/catalog.c @@ -21,9 +21,8 @@ #include #include -static pgBackup *read_backup_from_file(const char *path); - -#define BOOL_TO_STR(val) ((val) ? "true" : "false") +static const char *backupModes[] = {"", "PAGE", "PTRACK", "FULL"}; +static pgBackup *readBackupControlFile(const char *path); static bool exit_hook_registered = false; static char lock_file[MAXPGPATH]; @@ -208,7 +207,7 @@ catalog_lock(void) } /* - * Read backup meta information from BACKUP_CONF_FILE. + * Read backup meta information from BACKUP_CONTROL_FILE. * If no backup matches, return NULL. */ pgBackup * @@ -218,9 +217,9 @@ read_backup(time_t timestamp) char conf_path[MAXPGPATH]; tmp.start_time = timestamp; - pgBackupGetPath(&tmp, conf_path, lengthof(conf_path), BACKUP_CONF_FILE); + pgBackupGetPath(&tmp, conf_path, lengthof(conf_path), BACKUP_CONTROL_FILE); - return read_backup_from_file(conf_path); + return readBackupControlFile(conf_path); } static bool @@ -274,9 +273,9 @@ catalog_get_backup_list(time_t requested_backup_id) /* open subdirectory of specific backup */ join_path_components(date_path, backups_path, date_ent->d_name); - /* read backup information from BACKUP_CONF_FILE */ - snprintf(backup_conf_path, MAXPGPATH, "%s/%s", date_path, BACKUP_CONF_FILE); - backup = read_backup_from_file(backup_conf_path); + /* read backup information from BACKUP_CONTROL_FILE */ + snprintf(backup_conf_path, MAXPGPATH, "%s/%s", date_path, BACKUP_CONTROL_FILE); + backup = readBackupControlFile(backup_conf_path); /* ignore corrupted backups */ if (backup) @@ -370,94 +369,83 @@ pgBackupCreateDir(pgBackup *backup) } /* - * Write configuration section of backup.in to stream "out". + * Write information about backup.in to stream "out". + * TODO improve comments */ void -pgBackupWriteConfigSection(FILE *out, pgBackup *backup) -{ - static const char *modes[] = { "", "PAGE", "PTRACK", "FULL"}; - - fprintf(out, "# configuration\n"); - fprintf(out, "BACKUP_MODE=%s\n", modes[backup->backup_mode]); -} - -/* - * Write result section of backup.in to stream "out". - */ -void -pgBackupWriteResultSection(FILE *out, pgBackup *backup) +pgBackupWriteControl(FILE *out, pgBackup *backup) { char timestamp[20]; - - fprintf(out, "# result\n"); - fprintf(out, "TIMELINEID=%d\n", backup->tli); - fprintf(out, "START_LSN=%x/%08x\n", + fprintf(out, "#Configuration\n"); + fprintf(out, "backup-mode = %s\n", backupModes[backup->backup_mode]); + fprintf(out, "stream = %s\n", backup->stream?"true":"false"); + + fprintf(out, "\n#Compatibility\n"); + fprintf(out, "block-size = %u\n", backup->block_size); + fprintf(out, "xlog-block-size = %u\n", backup->wal_block_size); + fprintf(out, "checksum-version = %u\n", backup->checksum_version); + + fprintf(out, "\n#Result backup info\n"); + fprintf(out, "timelineid = %d\n", backup->tli); + fprintf(out, "start-lsn = %x/%08x\n", (uint32) (backup->start_lsn >> 32), (uint32) backup->start_lsn); - fprintf(out, "STOP_LSN=%x/%08x\n", + fprintf(out, "stop-lsn = %x/%08x\n", (uint32) (backup->stop_lsn >> 32), (uint32) backup->stop_lsn); time2iso(timestamp, lengthof(timestamp), backup->start_time); - fprintf(out, "START_TIME='%s'\n", timestamp); + fprintf(out, "start-time = '%s'\n", timestamp); if (backup->end_time > 0) { time2iso(timestamp, lengthof(timestamp), backup->end_time); - fprintf(out, "END_TIME='%s'\n", timestamp); + fprintf(out, "end-time = '%s'\n", timestamp); } - fprintf(out, "RECOVERY_XID=" XID_FMT "\n", backup->recovery_xid); + fprintf(out, "recovery-xid = " XID_FMT "\n", backup->recovery_xid); if (backup->recovery_time > 0) { time2iso(timestamp, lengthof(timestamp), backup->recovery_time); - fprintf(out, "RECOVERY_TIME='%s'\n", timestamp); + fprintf(out, "recovery-time = '%s'\n", timestamp); } + /* TODO rename the field? */ if (backup->data_bytes != BYTES_INVALID) - fprintf(out, "DATA_BYTES=" INT64_FORMAT "\n", - backup->data_bytes); - fprintf(out, "BLOCK_SIZE=%u\n", backup->block_size); - fprintf(out, "XLOG_BLOCK_SIZE=%u\n", backup->wal_block_size); - fprintf(out, "CHECKSUM_VERSION=%u\n", backup->checksum_version); - fprintf(out, "STREAM=%u\n", backup->stream); + fprintf(out, "data-bytes = " INT64_FORMAT "\n", backup->data_bytes); - fprintf(out, "STATUS=%s\n", status2str(backup->status)); + fprintf(out, "status = %s\n", status2str(backup->status)); if (backup->parent_backup != 0) { char *parent_backup = base36enc(backup->parent_backup); - fprintf(out, "PARENT_BACKUP='%s'\n", parent_backup); + fprintf(out, "parent-backup-id = '%s'\n", parent_backup); free(parent_backup); } } -/* create BACKUP_CONF_FILE */ +/* create BACKUP_CONTROL_FILE */ void -pgBackupWriteConf(pgBackup *backup) +pgBackupWriteBackupControlFile(pgBackup *backup) { FILE *fp = NULL; char ini_path[MAXPGPATH]; - pgBackupGetPath(backup, ini_path, lengthof(ini_path), BACKUP_CONF_FILE); + pgBackupGetPath(backup, ini_path, lengthof(ini_path), BACKUP_CONTROL_FILE); fp = fopen(ini_path, "wt"); if (fp == NULL) elog(ERROR, "cannot open configuration file \"%s\": %s", ini_path, strerror(errno)); - /* configuration section */ - pgBackupWriteConfigSection(fp, backup); - - /* result section */ - pgBackupWriteResultSection(fp, backup); + pgBackupWriteControl(fp, backup); fclose(fp); } /* - * Read BACKUP_CONF_FILE and create pgBackup. + * Read BACKUP_CONTROL_FILE and create pgBackup. * - Comment starts with ';'. * - Do not care section. */ static pgBackup * -read_backup_from_file(const char *path) +readBackupControlFile(const char *path) { pgBackup *backup = pgut_new(pgBackup); char *backup_mode = NULL; @@ -480,7 +468,7 @@ read_backup_from_file(const char *path) {'u', 0, "block-size", &backup->block_size, SOURCE_FILE_STRICT}, {'u', 0, "xlog-block-size", &backup->wal_block_size, SOURCE_FILE_STRICT}, {'u', 0, "checksum_version", &backup->checksum_version, SOURCE_FILE_STRICT}, - {'u', 0, "stream", &backup->stream, SOURCE_FILE_STRICT}, + {'b', 0, "stream", &backup->stream, SOURCE_FILE_STRICT}, {'s', 0, "status", &status, SOURCE_FILE_STRICT}, {'s', 0, "parent_backup", &parent_backup, SOURCE_FILE_STRICT}, {0} diff --git a/delete.c b/delete.c index a035898b..5adfa1c2 100644 --- a/delete.c +++ b/delete.c @@ -271,7 +271,7 @@ pgBackupDeleteFiles(pgBackup *backup) * the error occurs before deleting all backup files. */ backup->status = BACKUP_STATUS_DELETING; - pgBackupWriteConf(backup); + pgBackupWriteBackupControlFile(backup); /* list files to be deleted */ files = parray_new(); diff --git a/pg_probackup.h b/pg_probackup.h index 4f520dba..29b21945 100644 --- a/pg_probackup.h +++ b/pg_probackup.h @@ -36,7 +36,7 @@ #define BACKUPS_DIR "backups" #define PG_XLOG_DIR "pg_xlog" #define PG_TBLSPC_DIR "pg_tblspc" -#define BACKUP_CONF_FILE "backup.conf" +#define BACKUP_CONTROL_FILE "backup.control" #define BACKUP_CATALOG_CONF_FILE "pg_probackup.conf" #define BACKUP_CATALOG_PID "pg_probackup.pid" #define DATABASE_FILE_LIST "backup_content.control" @@ -286,9 +286,8 @@ extern parray *catalog_get_backup_list(time_t requested_backup_id); extern pgBackup *catalog_get_last_data_backup(parray *backup_list, TimeLineID tli); extern void catalog_lock(void); -extern void pgBackupWriteConfigSection(FILE *out, pgBackup *backup); -extern void pgBackupWriteResultSection(FILE *out, pgBackup *backup); -extern void pgBackupWriteConf(pgBackup *backup); +extern void pgBackupWriteControl(FILE *out, pgBackup *backup); +extern void pgBackupWriteBackupControlFile(pgBackup *backup); extern void pgBackupGetPath(const pgBackup *backup, char *path, size_t len, const char *subdir); extern int pgBackupCreateDir(pgBackup *backup); extern void pgBackupFree(void *backup); diff --git a/show.c b/show.c index 9a98558e..3d148f0d 100644 --- a/show.c +++ b/show.c @@ -11,6 +11,7 @@ #include "pg_probackup.h" #include +static const char *backupModes[] = {"", "PAGE", "PTRACK", "FULL"}; static void show_backup_list(FILE *out, parray *backup_list); static void show_backup_detail(FILE *out, pgBackup *backup); @@ -172,7 +173,6 @@ show_backup_list(FILE *out, parray *backup_list) for (i = 0; i < parray_num(backup_list); i++) { pgBackup *backup = parray_get(backup_list, i); - const char *modes[] = {"", "PAGE", "PTRACK", "FULL"}; TimeLineID parent_tli; char timestamp[20] = "----"; char duration[20] = "----"; @@ -198,7 +198,7 @@ show_backup_list(FILE *out, parray *backup_list) fprintf(out, "%-8s %-19s %s%s %2d / %-2d %5s %6s %2X/%08X %2X/%08X %-8s\n", base36enc(backup->start_time), timestamp, - modes[backup->backup_mode], + backupModes[backup->backup_mode], backup->stream ? "+STREAM": "+ARCHIVE", backup->tli, parent_tli, @@ -215,6 +215,5 @@ show_backup_list(FILE *out, parray *backup_list) static void show_backup_detail(FILE *out, pgBackup *backup) { - pgBackupWriteConfigSection(out, backup); - pgBackupWriteResultSection(out, backup); + pgBackupWriteControl(out, backup); } diff --git a/validate.c b/validate.c index 45d40600..7e3d4748 100644 --- a/validate.c +++ b/validate.c @@ -89,7 +89,7 @@ pgBackupValidate(pgBackup *backup) /* Update backup status */ backup->status = corrupted ? BACKUP_STATUS_CORRUPT : BACKUP_STATUS_OK; - pgBackupWriteConf(backup); + pgBackupWriteBackupControlFile(backup); if (corrupted) elog(WARNING, "Backup %s is corrupted", backup_id_string);