mirror of
https://github.com/postgres/postgres.git
synced 2025-09-02 04:21:28 +03:00
Fix archive_cleanup_command.
When I moved ExecuteRecoveryCommand() from xlog.c to xlogarchive.c, I didn't realize that it's called from the checkpoint process, not the startup process. I tried to use InRedo variable to decide whether or not to attempt cleaning up the archive (must not do so before we have read the initial checkpoint record), but that variable is only valid within the startup process. Instead, let ExecuteRecoveryCommand() always clean up the archive, and add an explicit argument to RestoreArchivedFile() to say whether that's allowed or not. The caller knows better. Reported by Erik Rijkers, diagnosis by Fujii Masao. Only 9.3devel is affected.
This commit is contained in:
@@ -243,7 +243,8 @@ extern char *recoveryRestoreCommand;
|
||||
* Prototypes for functions in xlogarchive.c
|
||||
*/
|
||||
extern bool RestoreArchivedFile(char *path, const char *xlogfname,
|
||||
const char *recovername, off_t expectedSize);
|
||||
const char *recovername, off_t expectedSize,
|
||||
bool cleanupEnabled);
|
||||
extern void ExecuteRecoveryCommand(char *command, char *commandName,
|
||||
bool failOnerror);
|
||||
extern void XLogArchiveNotify(const char *xlog);
|
||||
|
Reference in New Issue
Block a user