mirror of
https://github.com/postgres/postgres.git
synced 2025-11-10 17:42:29 +03:00
Report wait events for local shell commands like archive_command.
This commit introduces new wait events for archive_command, archive_cleanup_command, restore_command and recovery_end_command. Author: Fujii Masao Reviewed-by: Bharath Rupireddy, Michael Paquier Discussion: https://postgr.es/m/4ca4f920-6b48-638d-08b2-93598356f5d3@oss.nttdata.com
This commit is contained in:
@@ -5800,7 +5800,8 @@ CleanupAfterArchiveRecovery(TimeLineID EndOfLogTLI, XLogRecPtr EndOfLog,
|
||||
if (recoveryEndCommand && strcmp(recoveryEndCommand, "") != 0)
|
||||
ExecuteRecoveryCommand(recoveryEndCommand,
|
||||
"recovery_end_command",
|
||||
true);
|
||||
true,
|
||||
WAIT_EVENT_RECOVERY_END_COMMAND);
|
||||
|
||||
/*
|
||||
* We switched to a new timeline. Clean up segments on the old timeline.
|
||||
@@ -9915,7 +9916,8 @@ CreateRestartPoint(int flags)
|
||||
if (archiveCleanupCommand && strcmp(archiveCleanupCommand, "") != 0)
|
||||
ExecuteRecoveryCommand(archiveCleanupCommand,
|
||||
"archive_cleanup_command",
|
||||
false);
|
||||
false,
|
||||
WAIT_EVENT_ARCHIVE_CLEANUP_COMMAND);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
#include "access/xlogarchive.h"
|
||||
#include "common/archive.h"
|
||||
#include "miscadmin.h"
|
||||
#include "pgstat.h"
|
||||
#include "postmaster/startup.h"
|
||||
#include "postmaster/pgarch.h"
|
||||
#include "replication/walsender.h"
|
||||
@@ -168,7 +169,9 @@ RestoreArchivedFile(char *path, const char *xlogfname,
|
||||
/*
|
||||
* Copy xlog from archival storage to XLOGDIR
|
||||
*/
|
||||
pgstat_report_wait_start(WAIT_EVENT_RESTORE_COMMAND);
|
||||
rc = system(xlogRestoreCmd);
|
||||
pgstat_report_wait_end();
|
||||
|
||||
PostRestoreCommand();
|
||||
pfree(xlogRestoreCmd);
|
||||
@@ -284,7 +287,8 @@ not_available:
|
||||
* This is currently used for recovery_end_command and archive_cleanup_command.
|
||||
*/
|
||||
void
|
||||
ExecuteRecoveryCommand(const char *command, const char *commandName, bool failOnSignal)
|
||||
ExecuteRecoveryCommand(const char *command, const char *commandName,
|
||||
bool failOnSignal, uint32 wait_event_info)
|
||||
{
|
||||
char xlogRecoveryCmd[MAXPGPATH];
|
||||
char lastRestartPointFname[MAXPGPATH];
|
||||
@@ -354,7 +358,10 @@ ExecuteRecoveryCommand(const char *command, const char *commandName, bool failOn
|
||||
/*
|
||||
* execute the constructed command
|
||||
*/
|
||||
pgstat_report_wait_start(wait_event_info);
|
||||
rc = system(xlogRecoveryCmd);
|
||||
pgstat_report_wait_end();
|
||||
|
||||
if (rc != 0)
|
||||
{
|
||||
/*
|
||||
|
||||
Reference in New Issue
Block a user