Skip to content

IPC waits

PostgreSQL processes waiting for peers, workers, barriers, queues, or phase changes.

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/SyncRep is acknowledgement latency; LWLock/SyncRep is contention on shared queue/state metadata.
  • Many parallel wait names are expected barriers. The question is whether every participant eventually advances.
  • RecoveryPause can be entirely intentional; check pg_is_wal_replay_paused() before treating it as failure.

Waiting for subplan nodes of an Append plan node to be ready

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 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 for an elected Parallel Hash participant to decide on future batch growth

Waiting for a logical replication leader apply process to send data to a parallel apply process

Waiting for a logical replication remote server to send data for initial table synchronization

Waiting for standby promotion

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 group leader to update transaction status at transaction end