Hi,
While preparing for my presentation on PostgreSQL Wait Events at
PgConf India, I was trying to understand *IPC:XactGroupUpdate* in more
detail. PostgreSQL documentation [1] mentions:
> A process is waiting for the group leader to update the transaction status at the end of a _parallel operation_.
I looked at `TransactionGroupUpdateXidStatus` in PostgreSQL code (`clog.c`)
Line `481` [2] sets this wait event.
And after reading the code, my understanding is - It does not
necessarily need to be a "_parallel operation_". Or maybe I am just
misinterpreting "parallel operation" in this context. But it is
possible for other users to confuse it with the parallel query (and
parallel workers) feature.
**My understanding is -**
In order to avoid `XactSLRULock` being passed between backends,
backends waiting for it will add themselves to the queue [3]. The
first backend in the queue (also the leader) will be the only one to
acquire `XactSLRULock` and update the XID status for all those pids
which are in the queue. This IPC wait event (`XactGroupUpdate`) is
observed in other backened processes who are in the queue, waiting for
the group leader to update the XID status.
We can add more clarity on what this wait event means. A similar
change should be done for `ProcArrayGroupUpdate` to indicate that the
wait event is a result of concurrent backend processes trying to clear
the transaction id (instead of saying "parallel operation”).
I am attaching a patch for consideration. This should also be
backpatched-through version 13.
[1] https://www.postgresql.org/docs/current/monitoring-stats.html#WAIT-EVENT-IPC-TABLE
[2] https://github.com/postgres/postgres/blob/master/src/backend/access/transam/clog.c#L481
[3] https://github.com/postgres/postgres/blob/master/src/backend/access/transam/clog.c#L399
Thanks,
Sameer
DB Specialist,
Amazon Web Services