IO workers are treated as auxiliary processes. The comments fixed in
this commit stated that there could be only one auxiliary process of
each BackendType at the same time. This is not true for IO workers, as
up to MAX_IO_WORKERS of them can co-exist at the same time.
Author: Cédric Villemain <Cedric.Villemain@data-bene.io>
Co-authored-by: Michael Paquier <michael@paquier.xyz>
Discussion: https://postgr.es/m/
e4a3ac45-abce-4b58-a043-
b4a31cd11113@Data-Bene.io
/*
* We reserve a slot for each possible ProcNumber, plus one for each
* possible auxiliary process type. (This scheme assumes there is not
- * more than one of any auxiliary process type at a time.)
+ * more than one of any auxiliary process type at a time, except for
+ * IO workers.)
*/
#define NumProcSignalSlots (MaxBackends + NUM_AUXILIARY_PROCS)
/*
* We reserve a slot for each possible ProcNumber, plus one for each
* possible auxiliary process type. (This scheme assumes there is not
- * more than one of any auxiliary process type at a time.)
+ * more than one of any auxiliary process type at a time, except for
+ * IO workers.)
*/
#define NumProcStateSlots (MaxBackends + NUM_AUXILIARY_PROCS)
* Auxiliary processes. These have PGPROC entries, but they are not
* attached to any particular database, and cannot run transactions or
* even take heavyweight locks. There can be only one of each of these
- * running at a time.
+ * running at a time, except for IO workers.
*
* If you modify these, make sure to update NUM_AUXILIARY_PROCS and the
* glossary in the docs.