Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit1b06d7b

Browse files
committed
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 MasaoReviewed-by: Bharath Rupireddy, Michael PaquierDiscussion:https://postgr.es/m/4ca4f920-6b48-638d-08b2-93598356f5d3@oss.nttdata.com
1 parent97f5aef commit1b06d7b

File tree

7 files changed

+53
-5
lines changed

7 files changed

+53
-5
lines changed

‎doc/src/sgml/monitoring.sgml

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1569,7 +1569,17 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser
15691569
<entry>Waiting for subplan nodes of an <literal>Append</literal> plan
15701570
node to be ready.</entry>
15711571
</row>
1572-
<row>
1572+
<row>
1573+
<entry><literal>ArchiveCleanupCommand</literal></entry>
1574+
<entry>Waiting for <xref linkend="guc-archive-cleanup-command"/> to
1575+
complete.</entry>
1576+
</row>
1577+
<row>
1578+
<entry><literal>ArchiveCommand</literal></entry>
1579+
<entry>Waiting for <xref linkend="guc-archive-command"/> to
1580+
complete.</entry>
1581+
</row>
1582+
<row>
15731583
<entry><literal>BackendTermination</literal></entry>
15741584
<entry>Waiting for the termination of another backend.</entry>
15751585
</row>
@@ -1747,6 +1757,11 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser
17471757
<entry>Waiting for recovery conflict resolution for dropping a
17481758
tablespace.</entry>
17491759
</row>
1760+
<row>
1761+
<entry><literal>RecoveryEndCommand</literal></entry>
1762+
<entry>Waiting for <xref linkend="guc-recovery-end-command"/> to
1763+
complete.</entry>
1764+
</row>
17501765
<row>
17511766
<entry><literal>RecoveryPause</literal></entry>
17521767
<entry>Waiting for recovery to be resumed.</entry>
@@ -1761,6 +1776,11 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser
17611776
<entry>Waiting for a replication slot to become inactive so it can be
17621777
dropped.</entry>
17631778
</row>
1779+
<row>
1780+
<entry><literal>RestoreCommand</literal></entry>
1781+
<entry>Waiting for <xref linkend="guc-restore-command"/> to
1782+
complete.</entry>
1783+
</row>
17641784
<row>
17651785
<entry><literal>SafeSnapshot</literal></entry>
17661786
<entry>Waiting to obtain a valid snapshot for a <literal>READ ONLY

‎src/backend/access/transam/xlog.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5800,7 +5800,8 @@ CleanupAfterArchiveRecovery(TimeLineID EndOfLogTLI, XLogRecPtr EndOfLog,
58005800
if (recoveryEndCommand&&strcmp(recoveryEndCommand,"")!=0)
58015801
ExecuteRecoveryCommand(recoveryEndCommand,
58025802
"recovery_end_command",
5803-
true);
5803+
true,
5804+
WAIT_EVENT_RECOVERY_END_COMMAND);
58045805

58055806
/*
58065807
* We switched to a new timeline. Clean up segments on the old timeline.
@@ -9915,7 +9916,8 @@ CreateRestartPoint(int flags)
99159916
if (archiveCleanupCommand&&strcmp(archiveCleanupCommand,"")!=0)
99169917
ExecuteRecoveryCommand(archiveCleanupCommand,
99179918
"archive_cleanup_command",
9918-
false);
9919+
false,
9920+
WAIT_EVENT_ARCHIVE_CLEANUP_COMMAND);
99199921

99209922
return true;
99219923
}

‎src/backend/access/transam/xlogarchive.c

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
#include"access/xlogarchive.h"
2525
#include"common/archive.h"
2626
#include"miscadmin.h"
27+
#include"pgstat.h"
2728
#include"postmaster/startup.h"
2829
#include"postmaster/pgarch.h"
2930
#include"replication/walsender.h"
@@ -168,7 +169,9 @@ RestoreArchivedFile(char *path, const char *xlogfname,
168169
/*
169170
* Copy xlog from archival storage to XLOGDIR
170171
*/
172+
pgstat_report_wait_start(WAIT_EVENT_RESTORE_COMMAND);
171173
rc=system(xlogRestoreCmd);
174+
pgstat_report_wait_end();
172175

173176
PostRestoreCommand();
174177
pfree(xlogRestoreCmd);
@@ -284,7 +287,8 @@ RestoreArchivedFile(char *path, const char *xlogfname,
284287
* This is currently used for recovery_end_command and archive_cleanup_command.
285288
*/
286289
void
287-
ExecuteRecoveryCommand(constchar*command,constchar*commandName,boolfailOnSignal)
290+
ExecuteRecoveryCommand(constchar*command,constchar*commandName,
291+
boolfailOnSignal,uint32wait_event_info)
288292
{
289293
charxlogRecoveryCmd[MAXPGPATH];
290294
charlastRestartPointFname[MAXPGPATH];
@@ -354,7 +358,10 @@ ExecuteRecoveryCommand(const char *command, const char *commandName, bool failOn
354358
/*
355359
* execute the constructed command
356360
*/
361+
pgstat_report_wait_start(wait_event_info);
357362
rc=system(xlogRecoveryCmd);
363+
pgstat_report_wait_end();
364+
358365
if (rc!=0)
359366
{
360367
/*

‎src/backend/postmaster/pgarch.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -555,7 +555,10 @@ pgarch_archiveXlog(char *xlog)
555555
snprintf(activitymsg,sizeof(activitymsg),"archiving %s",xlog);
556556
set_ps_display(activitymsg);
557557

558+
pgstat_report_wait_start(WAIT_EVENT_ARCHIVE_COMMAND);
558559
rc=system(xlogarchcmd);
560+
pgstat_report_wait_end();
561+
559562
if (rc!=0)
560563
{
561564
/*

‎src/backend/utils/activity/wait_event.c

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -313,6 +313,12 @@ pgstat_get_wait_ipc(WaitEventIPC w)
313313
caseWAIT_EVENT_APPEND_READY:
314314
event_name="AppendReady";
315315
break;
316+
caseWAIT_EVENT_ARCHIVE_CLEANUP_COMMAND:
317+
event_name="ArchiveCleanupCommand";
318+
break;
319+
caseWAIT_EVENT_ARCHIVE_COMMAND:
320+
event_name="ArchiveCommand";
321+
break;
316322
caseWAIT_EVENT_BACKEND_TERMINATION:
317323
event_name="BackendTermination";
318324
break;
@@ -427,6 +433,9 @@ pgstat_get_wait_ipc(WaitEventIPC w)
427433
caseWAIT_EVENT_RECOVERY_CONFLICT_TABLESPACE:
428434
event_name="RecoveryConflictTablespace";
429435
break;
436+
caseWAIT_EVENT_RECOVERY_END_COMMAND:
437+
event_name="RecoveryEndCommand";
438+
break;
430439
caseWAIT_EVENT_RECOVERY_PAUSE:
431440
event_name="RecoveryPause";
432441
break;
@@ -436,6 +445,9 @@ pgstat_get_wait_ipc(WaitEventIPC w)
436445
caseWAIT_EVENT_REPLICATION_SLOT_DROP:
437446
event_name="ReplicationSlotDrop";
438447
break;
448+
caseWAIT_EVENT_RESTORE_COMMAND:
449+
event_name="RestoreCommand";
450+
break;
439451
caseWAIT_EVENT_SAFE_SNAPSHOT:
440452
event_name="SafeSnapshot";
441453
break;

‎src/include/access/xlogarchive.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ extern bool RestoreArchivedFile(char *path, const char *xlogfname,
2121
constchar*recovername,off_texpectedSize,
2222
boolcleanupEnabled);
2323
externvoidExecuteRecoveryCommand(constchar*command,constchar*commandName,
24-
boolfailOnSignal);
24+
boolfailOnSignal,uint32wait_event_info);
2525
externvoidKeepFileRestoredFromArchive(constchar*path,constchar*xlogfname);
2626
externvoidXLogArchiveNotify(constchar*xlog);
2727
externvoidXLogArchiveNotifySeg(XLogSegNosegno,TimeLineIDtli);

‎src/include/utils/wait_event.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,8 @@ typedef enum
8080
typedefenum
8181
{
8282
WAIT_EVENT_APPEND_READY=PG_WAIT_IPC,
83+
WAIT_EVENT_ARCHIVE_CLEANUP_COMMAND,
84+
WAIT_EVENT_ARCHIVE_COMMAND,
8385
WAIT_EVENT_BACKEND_TERMINATION,
8486
WAIT_EVENT_BACKUP_WAIT_WAL_ARCHIVE,
8587
WAIT_EVENT_BGWORKER_SHUTDOWN,
@@ -118,9 +120,11 @@ typedef enum
118120
WAIT_EVENT_PROMOTE,
119121
WAIT_EVENT_RECOVERY_CONFLICT_SNAPSHOT,
120122
WAIT_EVENT_RECOVERY_CONFLICT_TABLESPACE,
123+
WAIT_EVENT_RECOVERY_END_COMMAND,
121124
WAIT_EVENT_RECOVERY_PAUSE,
122125
WAIT_EVENT_REPLICATION_ORIGIN_DROP,
123126
WAIT_EVENT_REPLICATION_SLOT_DROP,
127+
WAIT_EVENT_RESTORE_COMMAND,
124128
WAIT_EVENT_SAFE_SNAPSHOT,
125129
WAIT_EVENT_SYNC_REP,
126130
WAIT_EVENT_WAL_RECEIVER_EXIT,

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp