Extension
The server process is waiting for some condition defined by an extension module
In other words, The PostgreSQL process is waiting for an operation defined by an installed Extension (add-on module) to complete.
The core database engine is "handing over the wheel" to an external module.
If you see high waits here, the bottleneck is not in standard PostgreSQL features (like tables or indexes), but in the specific logic of the extension you are using.
Why it is happening (Root Causes)
Following extensions are some of the common trouble makers that can cause waits in this category:
- Foreign Data Wrappers (postgres_fdw, oracle_fdw):
This is the most common cause. If you query a remote table, your local PostgreSQL waits for the remote server to reply.
While waiting for the network packet, the wait event is often "Extension".
-
Distributed Databases (Citus/TimescaleDB):
If you use Citus, the "Coordinator" node must wait for "Worker" nodes to process data and send it back.
That wait is often recorded as an Extension event.
-
Logical Replication Plugins:
Custom logical decoders (used for CDC - Change Data Capture) might wait on external systems to acknowledge data receipt.
-
Background Workers (pg_cron):
Tools like pg_cron sleep while waiting for the next scheduled job time. This sleep is technically a wait event.