Fix gs_probackup doesn't clean lockfile when exit.
This commit is contained in:
@ -66,7 +66,7 @@ timelineInfoFree(void *tliInfo)
|
||||
|
||||
/* Iterate over locked backups and delete locks files */
|
||||
void
|
||||
unlink_lock_atexit(void)
|
||||
unlink_lock_atexit(bool fatal, void *userdata)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
@ -537,12 +537,15 @@ static int do_validate_operate()
|
||||
|
||||
static int do_actual_operate()
|
||||
{
|
||||
int res = 0;
|
||||
pgut_atexit_push(unlink_lock_atexit, NULL);
|
||||
switch (backup_subcmd)
|
||||
{
|
||||
case ADD_INSTANCE_CMD:
|
||||
return do_add_instance(&instance_config);
|
||||
case DELETE_INSTANCE_CMD:
|
||||
return do_delete_instance();
|
||||
res = do_delete_instance();
|
||||
break;
|
||||
case INIT_CMD:
|
||||
return do_init();
|
||||
case BACKUP_CMD:
|
||||
@ -556,14 +559,17 @@ static int do_actual_operate()
|
||||
elog(ERROR, "required parameter not specified: BACKUP_MODE "
|
||||
"(-b, --backup-mode)");
|
||||
|
||||
return do_backup(start_time, set_backup_params, no_validate, no_sync, backup_logs, backup_replslots);
|
||||
res = do_backup(start_time, set_backup_params, no_validate, no_sync, backup_logs, backup_replslots);
|
||||
break;
|
||||
}
|
||||
case RESTORE_CMD:
|
||||
return do_restore_or_validate(current.backup_id,
|
||||
res = do_restore_or_validate(current.backup_id,
|
||||
recovery_target_options,
|
||||
restore_params, no_sync);
|
||||
break;
|
||||
case VALIDATE_CMD:
|
||||
return do_validate_operate();
|
||||
res = do_validate_operate();
|
||||
break;
|
||||
case SHOW_CMD:
|
||||
return do_show(instance_name, current.backup_id, show_archive);
|
||||
case DELETE_CMD:
|
||||
@ -589,10 +595,9 @@ static int do_actual_operate()
|
||||
}
|
||||
|
||||
on_cleanup();
|
||||
unlink_lock_atexit();
|
||||
release_logfile();
|
||||
|
||||
return 0;
|
||||
return res;
|
||||
}
|
||||
|
||||
static void parse_backup_option_to_params(char *command, char *command_name)
|
||||
|
@ -478,7 +478,7 @@ extern bool fio_is_remote_simple(fio_location location);
|
||||
extern void get_header_errormsg(Page page, char **errormsg);
|
||||
extern void get_checksum_errormsg(Page page, char **errormsg,
|
||||
BlockNumber absolute_blkno);
|
||||
extern void unlink_lock_atexit(void);
|
||||
extern void unlink_lock_atexit(bool fatal, void *userdata);
|
||||
|
||||
extern bool
|
||||
datapagemap_is_set(datapagemap_t *map, BlockNumber blkno);
|
||||
|
@ -247,7 +247,7 @@ static HeapTuple GetDatabaseTuple(const char* dbname)
|
||||
|
||||
char* GetDatabaseCompatibility(const char* dbname)
|
||||
{
|
||||
if (!dbname)
|
||||
if (!dbname || dbname[0] == 0)
|
||||
return NULL;
|
||||
HeapTuple tuple = GetDatabaseTuple(dbname);
|
||||
if (!tuple)
|
||||
|
Reference in New Issue
Block a user