Skip to content

Commit 030273b

Browse files
committed
Fix inadequacies in recently added wait events
In commit 9915de6, we introduced a new wait point for replication slots and incorrectly labelled it as wait event PG_WAIT_LOCK. That's wrong, so invent an appropriate new wait event instead, and document it properly. While at it, fix numerous other problems in the vicinity: - two different walreceiver wait events were being mixed up in a single wait event (which wasn't documented either); split it out so that they can be distinguished, and document the new events properly. - ParallelBitmapPopulate was documented but didn't exist. - ParallelBitmapScan was not documented (I think this should be called "ParallelBitmapScanInit" instead.) - Logical replication wait events weren't documented - various symbols had been added in dartboard order in various places. Put them in alphabetical order instead, as was originally intended. Discussion: https://postgr.es/m/20170808181131.mu4fjepuh5m75cyq@alvherre.pgsql
1 parent b4a2eea commit 030273b

File tree

5 files changed

+64
-27
lines changed

5 files changed

+64
-27
lines changed

doc/src/sgml/monitoring.sgml

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1175,6 +1175,14 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser
11751175
<entry><literal>CheckpointerMain</></entry>
11761176
<entry>Waiting in main loop of checkpointer process.</entry>
11771177
</row>
1178+
<row>
1179+
<entry><literal>LogicalLauncherMain</></entry>
1180+
<entry>Waiting in main loop of logical launcher process.</entry>
1181+
</row>
1182+
<row>
1183+
<entry><literal>LogicalApplyMain</></entry>
1184+
<entry>Waiting in main loop of logical apply process.</entry>
1185+
</row>
11781186
<row>
11791187
<entry><literal>PgStatMain</></entry>
11801188
<entry>Waiting in main loop of the statistics collector process.</entry>
@@ -1212,6 +1220,14 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser
12121220
<entry><literal>ClientWrite</></entry>
12131221
<entry>Waiting to write data from the client.</entry>
12141222
</row>
1223+
<row>
1224+
<entry><literal>LibPQWalReceiverConnect</></entry>
1225+
<entry>Waiting in WAL receiver to establish connection to remote server.<entry>
1226+
</row>
1227+
<row>
1228+
<entry><literal>LibPQWalReceiverReceive</></entry>
1229+
<entry>Waiting in WAL receiver to receive data from remote server.<entry>
1230+
</row>
12151231
<row>
12161232
<entry><literal>SSLOpenServer</></entry>
12171233
<entry>Waiting for SSL while attempting connection.</entry>
@@ -1250,6 +1266,14 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser
12501266
<entry><literal>ExecuteGather</></entry>
12511267
<entry>Waiting for activity from child process when executing <literal>Gather</> node.</entry>
12521268
</row>
1269+
<row>
1270+
<entry><literal>LogicalSyncData</></entry>
1271+
<entry>Waiting for logical replication remote server to send data for initial table synchronization.</entry>
1272+
</row>
1273+
<row>
1274+
<entry><literal>LogicalSyncStateChange</></entry>
1275+
<entry>Waiting for logical replication remote server to change state.</entry>
1276+
</row>
12531277
<row>
12541278
<entry><literal>MessageQueueInternal</></entry>
12551279
<entry>Waiting for other process to be attached in shared message queue.</entry>
@@ -1271,13 +1295,17 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser
12711295
<entry>Waiting for parallel workers to finish computing.</entry>
12721296
</row>
12731297
<row>
1274-
<entry><literal>ParallelBitmapPopulate</></entry>
1275-
<entry>Waiting for the leader to populate the TidBitmap.</entry>
1298+
<entry><literal>ParallelBitmapScan</></entry>
1299+
<entry>Waiting for parallel bitmap scan to become initialized.</entry>
12761300
</row>
12771301
<row>
12781302
<entry><literal>ProcArrayGroupUpdate</></entry>
12791303
<entry>Waiting for group leader to clear transaction id at transaction end.</entry>
12801304
</row>
1305+
<row>
1306+
<entry><literal>ReplicationSlotDrop</></entry>
1307+
<entry>Waiting for a replication slot to become inactive to be dropped.</entry>
1308+
</row>
12811309
<row>
12821310
<entry><literal>SafeSnapshot</></entry>
12831311
<entry>Waiting for a snapshot for a <literal>READ ONLY DEFERRABLE</> transaction.</entry>

src/backend/postmaster/pgstat.c

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3481,6 +3481,12 @@ pgstat_get_wait_activity(WaitEventActivity w)
34813481
case WAIT_EVENT_CHECKPOINTER_MAIN:
34823482
event_name = "CheckpointerMain";
34833483
break;
3484+
case WAIT_EVENT_LOGICAL_LAUNCHER_MAIN:
3485+
event_name = "LogicalLauncherMain";
3486+
break;
3487+
case WAIT_EVENT_LOGICAL_APPLY_MAIN:
3488+
event_name = "LogicalApplyMain";
3489+
break;
34843490
case WAIT_EVENT_PGSTAT_MAIN:
34853491
event_name = "PgStatMain";
34863492
break;
@@ -3502,12 +3508,6 @@ pgstat_get_wait_activity(WaitEventActivity w)
35023508
case WAIT_EVENT_WAL_WRITER_MAIN:
35033509
event_name = "WalWriterMain";
35043510
break;
3505-
case WAIT_EVENT_LOGICAL_LAUNCHER_MAIN:
3506-
event_name = "LogicalLauncherMain";
3507-
break;
3508-
case WAIT_EVENT_LOGICAL_APPLY_MAIN:
3509-
event_name = "LogicalApplyMain";
3510-
break;
35113511
/* no default case, so that compiler will warn */
35123512
}
35133513

@@ -3533,15 +3533,18 @@ pgstat_get_wait_client(WaitEventClient w)
35333533
case WAIT_EVENT_CLIENT_WRITE:
35343534
event_name = "ClientWrite";
35353535
break;
3536+
case WAIT_EVENT_LIBPQWALRECEIVER_CONNECT:
3537+
event_name = "LibPQWalReceiverConnect";
3538+
break;
3539+
case WAIT_EVENT_LIBPQWALRECEIVER_RECEIVE:
3540+
event_name = "LibPQWalReceiverReceive";
3541+
break;
35363542
case WAIT_EVENT_SSL_OPEN_SERVER:
35373543
event_name = "SSLOpenServer";
35383544
break;
35393545
case WAIT_EVENT_WAL_RECEIVER_WAIT_START:
35403546
event_name = "WalReceiverWaitStart";
35413547
break;
3542-
case WAIT_EVENT_LIBPQWALRECEIVER:
3543-
event_name = "LibPQWalReceiver";
3544-
break;
35453548
case WAIT_EVENT_WAL_SENDER_WAIT_WAL:
35463549
event_name = "WalSenderWaitForWAL";
35473550
break;
@@ -3579,6 +3582,12 @@ pgstat_get_wait_ipc(WaitEventIPC w)
35793582
case WAIT_EVENT_EXECUTE_GATHER:
35803583
event_name = "ExecuteGather";
35813584
break;
3585+
case WAIT_EVENT_LOGICAL_SYNC_DATA:
3586+
event_name = "LogicalSyncData";
3587+
break;
3588+
case WAIT_EVENT_LOGICAL_SYNC_STATE_CHANGE:
3589+
event_name = "LogicalSyncStateChange";
3590+
break;
35823591
case WAIT_EVENT_MQ_INTERNAL:
35833592
event_name = "MessageQueueInternal";
35843593
break;
@@ -3600,18 +3609,15 @@ pgstat_get_wait_ipc(WaitEventIPC w)
36003609
case WAIT_EVENT_PROCARRAY_GROUP_UPDATE:
36013610
event_name = "ProcArrayGroupUpdate";
36023611
break;
3612+
case WAIT_EVENT_REPLICATION_SLOT_DROP:
3613+
event_name = "ReplicationSlotDrop";
3614+
break;
36033615
case WAIT_EVENT_SAFE_SNAPSHOT:
36043616
event_name = "SafeSnapshot";
36053617
break;
36063618
case WAIT_EVENT_SYNC_REP:
36073619
event_name = "SyncRep";
36083620
break;
3609-
case WAIT_EVENT_LOGICAL_SYNC_DATA:
3610-
event_name = "LogicalSyncData";
3611-
break;
3612-
case WAIT_EVENT_LOGICAL_SYNC_STATE_CHANGE:
3613-
event_name = "LogicalSyncStateChange";
3614-
break;
36153621
/* no default case, so that compiler will warn */
36163622
}
36173623

src/backend/replication/libpqwalreceiver/libpqwalreceiver.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ libpqrcv_connect(const char *conninfo, bool logical, const char *appname,
181181
WL_LATCH_SET | io_flag,
182182
PQsocket(conn->streamConn),
183183
0,
184-
WAIT_EVENT_LIBPQWALRECEIVER);
184+
WAIT_EVENT_LIBPQWALRECEIVER_CONNECT);
185185

186186
/* Emergency bailout? */
187187
if (rc & WL_POSTMASTER_DEATH)
@@ -582,7 +582,7 @@ libpqrcv_PQexec(PGconn *streamConn, const char *query)
582582
WL_LATCH_SET,
583583
PQsocket(streamConn),
584584
0,
585-
WAIT_EVENT_LIBPQWALRECEIVER);
585+
WAIT_EVENT_LIBPQWALRECEIVER_RECEIVE);
586586

587587
/* Emergency bailout? */
588588
if (rc & WL_POSTMASTER_DEATH)

src/backend/replication/slot.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -391,7 +391,8 @@ ReplicationSlotAcquire(const char *name, bool nowait)
391391
name, active_pid)));
392392

393393
/* Wait here until we get signaled, and then restart */
394-
ConditionVariableSleep(&slot->active_cv, PG_WAIT_LOCK);
394+
ConditionVariableSleep(&slot->active_cv,
395+
WAIT_EVENT_REPLICATION_SLOT_DROP);
395396
ConditionVariableCancelSleep();
396397
goto retry;
397398
}

src/include/pgstat.h

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -759,15 +759,15 @@ typedef enum
759759
WAIT_EVENT_BGWRITER_HIBERNATE,
760760
WAIT_EVENT_BGWRITER_MAIN,
761761
WAIT_EVENT_CHECKPOINTER_MAIN,
762+
WAIT_EVENT_LOGICAL_LAUNCHER_MAIN,
763+
WAIT_EVENT_LOGICAL_APPLY_MAIN,
762764
WAIT_EVENT_PGSTAT_MAIN,
763765
WAIT_EVENT_RECOVERY_WAL_ALL,
764766
WAIT_EVENT_RECOVERY_WAL_STREAM,
765767
WAIT_EVENT_SYSLOGGER_MAIN,
766768
WAIT_EVENT_WAL_RECEIVER_MAIN,
767769
WAIT_EVENT_WAL_SENDER_MAIN,
768-
WAIT_EVENT_WAL_WRITER_MAIN,
769-
WAIT_EVENT_LOGICAL_LAUNCHER_MAIN,
770-
WAIT_EVENT_LOGICAL_APPLY_MAIN
770+
WAIT_EVENT_WAL_WRITER_MAIN
771771
} WaitEventActivity;
772772

773773
/* ----------
@@ -782,9 +782,10 @@ typedef enum
782782
{
783783
WAIT_EVENT_CLIENT_READ = PG_WAIT_CLIENT,
784784
WAIT_EVENT_CLIENT_WRITE,
785+
WAIT_EVENT_LIBPQWALRECEIVER_CONNECT,
786+
WAIT_EVENT_LIBPQWALRECEIVER_RECEIVE,
785787
WAIT_EVENT_SSL_OPEN_SERVER,
786788
WAIT_EVENT_WAL_RECEIVER_WAIT_START,
787-
WAIT_EVENT_LIBPQWALRECEIVER,
788789
WAIT_EVENT_WAL_SENDER_WAIT_WAL,
789790
WAIT_EVENT_WAL_SENDER_WRITE_DATA
790791
} WaitEventClient;
@@ -802,17 +803,18 @@ typedef enum
802803
WAIT_EVENT_BGWORKER_STARTUP,
803804
WAIT_EVENT_BTREE_PAGE,
804805
WAIT_EVENT_EXECUTE_GATHER,
806+
WAIT_EVENT_LOGICAL_SYNC_DATA,
807+
WAIT_EVENT_LOGICAL_SYNC_STATE_CHANGE,
805808
WAIT_EVENT_MQ_INTERNAL,
806809
WAIT_EVENT_MQ_PUT_MESSAGE,
807810
WAIT_EVENT_MQ_RECEIVE,
808811
WAIT_EVENT_MQ_SEND,
809812
WAIT_EVENT_PARALLEL_FINISH,
810813
WAIT_EVENT_PARALLEL_BITMAP_SCAN,
811814
WAIT_EVENT_PROCARRAY_GROUP_UPDATE,
815+
WAIT_EVENT_REPLICATION_SLOT_DROP,
812816
WAIT_EVENT_SAFE_SNAPSHOT,
813-
WAIT_EVENT_SYNC_REP,
814-
WAIT_EVENT_LOGICAL_SYNC_DATA,
815-
WAIT_EVENT_LOGICAL_SYNC_STATE_CHANGE
817+
WAIT_EVENT_SYNC_REP
816818
} WaitEventIPC;
817819

818820
/* ----------

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy