diff options
| author | Michael Paquier | 2023-01-16 07:31:43 +0000 |
|---|---|---|
| committer | Michael Paquier | 2023-01-16 07:31:43 +0000 |
| commit | 9a740f81eb02e04179d78f3df2ce671276c27b07 (patch) | |
| tree | 74377420cb332855295542dcf1e21db126c0e251 /src/include | |
| parent | 02d3448f4f792964995b8071fa07176606e1af85 (diff) | |
Refactor code in charge of running shell-based recovery commands
The code specific to the execution of archive_cleanup_command,
recovery_end_command and restore_command is moved to a new file named
shell_restore.c. The code is split into three functions:
- shell_restore(), that attempts the execution of a shell-based
restore_command.
- shell_archive_cleanup(), for archive_cleanup_command.
- shell_recovery_end(), for recovery_end_command.
This introduces no functional changes, with failure patterns and logs
generated in consequence being the same as before (one case actually
generates one less DEBUG2 message "could not restore" when a restore
command succeeds but the follow-up stat() to check the size fails, but
that only matters with a elevel high enough).
This is preparatory work for allowing recovery modules, a facility
similar to archive modules, with callbacks shaped similarly to the
functions introduced here.
Author: Nathan Bossart
Reviewed-by: Andres Freund, Michael Paquier
Discussion: https://postgr.es/m/20221227192449.GA3672473@nathanxps13
Diffstat (limited to 'src/include')
| -rw-r--r-- | src/include/access/xlogarchive.h | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/include/access/xlogarchive.h b/src/include/access/xlogarchive.h index 31ff2060340..299304703e1 100644 --- a/src/include/access/xlogarchive.h +++ b/src/include/access/xlogarchive.h @@ -20,8 +20,6 @@ extern bool RestoreArchivedFile(char *path, const char *xlogfname, const char *recovername, off_t expectedSize, bool cleanupEnabled); -extern void ExecuteRecoveryCommand(const char *command, const char *commandName, - bool failOnSignal, uint32 wait_event_info); extern void KeepFileRestoredFromArchive(const char *path, const char *xlogfname); extern void XLogArchiveNotify(const char *xlog); extern void XLogArchiveNotifySeg(XLogSegNo segno, TimeLineID tli); @@ -32,4 +30,9 @@ extern bool XLogArchiveIsReady(const char *xlog); extern bool XLogArchiveIsReadyOrDone(const char *xlog); extern void XLogArchiveCleanup(const char *xlog); +extern bool shell_restore(const char *file, const char *path, + const char *lastRestartPointFileName); +extern void shell_archive_cleanup(const char *lastRestartPointFileName); +extern void shell_recovery_end(const char *lastRestartPointFileName); + #endif /* XLOG_ARCHIVE_H */ |
