IPC waits
IPC is coordination: this process has reached a point that depends on another PostgreSQL process or execution participant. The peer may be a parallel worker, WAL receiver, checkpointer, archiver, replication process, or another backend in a shared-memory protocol.
Find the missing peer or phase
The waiter is often healthy. Ask which participant is expected to signal it and inspect that participant’s state. Parallel-query events should be read as a phase diagram; replication events as a sender/receiver pipeline; checkpoint events as a cluster-wide barrier.
- Normal: brief rendezvous in parallel plans, checkpoint start/completion, worker startup, or synchronous replication.
- Watch: a foreground waiter remains in the same phase across three samples while its peer makes no visible progress.
- Urgent: the peer has exited or is blocked, a queue cannot drain, replication/failover is stalled, or many sessions depend on one stuck coordinator.
Events to recognize
| Event | Peer or phase |
|---|---|
| BufferIo | Another backend performing I/O for the shared buffer |
| ExecuteGather | Child processes feeding a Gather node |
| ParallelFinish | Parallel workers reaching plan completion |
| CheckpointDone | Checkpointer completing a requested checkpoint |
| SyncRep | Remote synchronous standby acknowledgement |
| WalReceiverWaitStart | Startup process waiting for streaming data |
| MessageQueueReceive | Shared-memory message queue producer |
| RecoveryPause | Recovery intentionally paused by operator policy |
Common misreads
- Killing the waiter does not repair a dead or blocked peer.
IPC/SyncRepis acknowledgement latency;LWLock/SyncRepis contention on shared queue/state metadata.- Many parallel wait names are expected barriers. The question is whether every participant eventually advances.
RecoveryPausecan be entirely intentional; checkpg_is_wal_replay_paused()before treating it as failure.
Waiting for subplan nodes of an Append plan node to be ready
Waiting for archive_cleanup_command to complete
Waiting for archive_command to complete
Waiting for the termination of another backend
Waiting for WAL files required for a backup to be successfully archived
Waiting for background worker to shut down
Waiting for background worker to start up
Waiting for the page number needed to continue a parallel B-tree scan to become available
Waiting for buffer I/O to complete
Waiting for a backend that blocks a checkpoint from completing
Waiting for a backend that blocks a checkpoint from starting
Waiting for a checkpoint to complete
Waiting for a checkpoint to start
Waiting for activity from a child process while executing a Gather plan node
Waiting for an elected Parallel Hash participant to allocate a hash table
Waiting to elect a Parallel Hash participant to allocate a hash table
Waiting for other Parallel Hash participants to finish loading a hash table
Waiting for an elected Parallel Hash participant to allocate the initial hash table
Waiting to elect a Parallel Hash participant to allocate the initial hash table
Waiting for other Parallel Hash participants to finish hashing the inner relation
Waiting for other Parallel Hash participants to finish partitioning the outer relation
Waiting to elect a Parallel Hash participant to decide on future batch growth
Waiting to elect a Parallel Hash participant to allocate more batches
Waiting for an elected Parallel Hash participant to decide on future batch growth
Waiting for an elected Parallel Hash participant to allocate more batches
Waiting for other Parallel Hash participants to finish repartitioning
Waiting to elect a Parallel Hash participant to allocate more buckets
Waiting for an elected Parallel Hash participant to finish allocating more buckets
Waiting for other Parallel Hash participants to finish inserting tuples into new buckets
Waiting for a logical replication leader apply process to send data to a parallel apply process
Waiting for a logical replication parallel apply process to change state
Waiting for a logical replication remote server to send data for initial table synchronization
Waiting for a logical replication remote server to change state
Waiting for another process to be attached to a shared message queue
Waiting to write a protocol message to a shared message queue
Waiting to receive bytes from a shared message queue
Waiting to send bytes to a shared message queue
Waiting for a multixact creation to complete
Waiting for parallel bitmap scan to become initialized
Waiting for parallel CREATE INDEX workers to finish heap scan
Waiting for parallel workers to finish computing
Waiting for a barrier event to be processed by all backends
Waiting for the group leader to clear the transaction ID at transaction end
Waiting for standby promotion
Waiting for recovery conflict resolution for a vacuum cleanup
Waiting for recovery conflict resolution for dropping a tablespace
Waiting for recovery_end_command to complete
Waiting for recovery to be resumed
Waiting for a replication origin to become inactive so it can be dropped
Waiting for a replication slot to become inactive so it can be dropped
Waiting for restore_command to complete
Waiting to obtain a valid snapshot for a READ ONLY DEFERRABLE transaction
Waiting for confirmation from a remote server during synchronous replication
Waiting for the WAL receiver to exit
Waiting for upstream server WAL flush position to catch up to requested start point
Waiting for startup process to send initial data for streaming replication
Waiting for a new WAL summary to be generated
Waiting for the group leader to update transaction status at transaction end