aboutsummaryrefslogtreecommitdiff
path: root/src/backend/tcop/postgres.c
diff options
context:
space:
mode:
authorRobert Haas <rhaas@postgresql.org>2019-12-19 14:56:20 -0500
committerRobert Haas <rhaas@postgresql.org>2019-12-19 14:56:20 -0500
commit16a4e4aecd47da7a6c4e1ebc20f6dd1a13f9133b (patch)
tree598ee1c089f080fde4bcb2e0707bb342fb934aa6 /src/backend/tcop/postgres.c
parent9f83468b3536caf6fb7fe8f9dcdbb108a98d1257 (diff)
downloadpostgresql-16a4e4aecd47da7a6c4e1ebc20f6dd1a13f9133b.tar.gz
postgresql-16a4e4aecd47da7a6c4e1ebc20f6dd1a13f9133b.zip
Extend the ProcSignal mechanism to support barriers.
A new function EmitProcSignalBarrier() can be used to emit a global barrier which all backends that participate in the ProcSignal mechanism must absorb, and a new function WaitForProcSignalBarrier() can be used to wait until all relevant backends have in fact absorbed the barrier. This can be used to coordinate global state changes, such as turning checksums on while the system is running. There's no real client of this mechanism yet, although two are proposed, but an enum has to have at least one element, so this includes a placeholder type (PROCSIGNAL_BARRIER_PLACEHOLDER) which should be replaced by the first real client of this mechanism to get committed. Andres Freund and Robert Haas, reviewed by Daniel Gustafsson and, in earlier versions, by Magnus Hagander. Discussion: http://postgr.es/m/CA+TgmoZwDk=BguVDVa+qdA6SBKef=PKbaKDQALTC_9qoz1mJqg@mail.gmail.com
Diffstat (limited to 'src/backend/tcop/postgres.c')
-rw-r--r--src/backend/tcop/postgres.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c
index ef5a9529689..c42d9ce09a7 100644
--- a/src/backend/tcop/postgres.c
+++ b/src/backend/tcop/postgres.c
@@ -3180,6 +3180,9 @@ ProcessInterrupts(void)
}
+ if (ProcSignalBarrierPending)
+ ProcessProcSignalBarrier();
+
if (ParallelMessagePending)
HandleParallelMessages();
}