mirror of
https://git.FreeBSD.org/ports.git
synced 2025-01-04 06:15:24 +00:00
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>
This commit is contained in:
parent
4c1f9ea239
commit
3697f927cc
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=75907
@ -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
|
||||
{
|
||||
|
@ -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
|
||||
{
|
||||
|
@ -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
|
||||
{
|
||||
|
@ -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
|
||||
{
|
||||
|
@ -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
|
||||
{
|
||||
|
@ -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
|
||||
{
|
||||
|
@ -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
|
||||
{
|
||||
|
@ -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
|
||||
{
|
||||
|
@ -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
|
||||
{
|
||||
|
@ -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
|
||||
{
|
||||
|
@ -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
|
||||
{
|
||||
|
@ -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
|
||||
{
|
||||
|
@ -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
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user