aboutsummaryrefslogtreecommitdiffstats
path: root/databases/postgresql82-server
diff options
context:
space:
mode:
authorseanc <seanc@FreeBSD.org>2003-02-20 04:12:55 +0800
committerseanc <seanc@FreeBSD.org>2003-02-20 04:12:55 +0800
commitb01a5d9baa1ca6cca9ea3c3cda2c7869f2299b62 (patch)
treebdccb244ad10b13adebd66de81b4dab9e3a7eff1 /databases/postgresql82-server
parent721cb2a1c7eb92854f57ee884c64430c4b4f3470 (diff)
downloadfreebsd-ports-gnome-b01a5d9baa1ca6cca9ea3c3cda2c7869f2299b62.tar.gz
freebsd-ports-gnome-b01a5d9baa1ca6cca9ea3c3cda2c7869f2299b62.tar.zst
freebsd-ports-gnome-b01a5d9baa1ca6cca9ea3c3cda2c7869f2299b62.zip
Add a patch fix a long standing bug in PostgreSQL with LISTEN/NOTIFY
queues and shutting down the database. Not bumping port revision, but if you are having problems related to the above, update as necessary. Submitted by: Larry Rosenman <ler@lerctr.org>
Diffstat (limited to 'databases/postgresql82-server')
-rw-r--r--databases/postgresql82-server/files/patch-src::backend::commands::async.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/databases/postgresql82-server/files/patch-src::backend::commands::async.c b/databases/postgresql82-server/files/patch-src::backend::commands::async.c
new file mode 100644
index 000000000000..78eea1eae01c
--- /dev/null
+++ b/databases/postgresql82-server/files/patch-src::backend::commands::async.c
@@ -0,0 +1,38 @@
+*** src/backend/commands/async.c.orig Sun Sep 15 21:24:41 2002
+--- src/backend/commands/async.c Mon Feb 17 21:38:47 2003
+***************
+*** 599,604 ****
+--- 599,614 ----
+
+ if (notifyInterruptEnabled)
+ {
++ bool save_ImmediateInterruptOK = ImmediateInterruptOK;
++
++ /*
++ * We may be called while ImmediateInterruptOK is true; turn it off
++ * while messing with the NOTIFY state. (We would have to save
++ * and restore it anyway, because PGSemaphore operations inside
++ * ProcessIncomingNotify() might reset it.)
++ */
++ ImmediateInterruptOK = false;
++
+ /*
+ * I'm not sure whether some flavors of Unix might allow another
+ * SIGUSR2 occurrence to recursively interrupt this routine. To
+***************
+*** 626,631 ****
+--- 636,648 ----
+ elog(LOG, "Async_NotifyHandler: done");
+ }
+ }
++
++ /*
++ * Restore ImmediateInterruptOK, and check for interrupts if needed.
++ */
++ ImmediateInterruptOK = save_ImmediateInterruptOK;
++ if (save_ImmediateInterruptOK)
++ CHECK_FOR_INTERRUPTS();
+ }
+ else
+ {
+