pgsql: Fix incorrect initialization of ProcGlobal->startupBufferPinWait

Started by Tom Lanealmost 15 years ago4 messagescomitters
Jump to latest
#1Tom Lane
tgl@sss.pgh.pa.us

Fix incorrect initialization of ProcGlobal->startupBufferPinWaitBufId.

It was initialized in the wrong place and to the wrong value. With bad
luck this could result in incorrect query-cancellation failures in hot
standby sessions, should a HS backend be holding pin on buffer number 1
while trying to acquire a lock.

Branch
------
master

Details
-------
http://git.postgresql.org/pg/commitdiff/2e53bd5517431637e495c7614761e5aae46b4eba

Modified Files
--------------
src/backend/storage/buffer/bufmgr.c | 3 ++-
src/backend/storage/lmgr/proc.c | 10 ++++------
src/include/storage/proc.h | 2 +-
3 files changed, 7 insertions(+), 8 deletions(-)

#2Simon Riggs
simon@2ndQuadrant.com
In reply to: Tom Lane (#1)
Re: pgsql: Fix incorrect initialization of ProcGlobal->startupBufferPinWait

On Tue, Aug 2, 2011 at 6:24 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:

Fix incorrect initialization of ProcGlobal->startupBufferPinWaitBufId.

It was initialized in the wrong place and to the wrong value.  With bad
luck this could result in incorrect query-cancellation failures in hot
standby sessions, should a HS backend be holding pin on buffer number 1
while trying to acquire a lock.

Did I miss a bug report?

--
 Simon Riggs                   http://www.2ndQuadrant.com/
 PostgreSQL Development, 24x7 Support, Training & Services

#3Tom Lane
tgl@sss.pgh.pa.us
In reply to: Simon Riggs (#2)
Re: pgsql: Fix incorrect initialization of ProcGlobal->startupBufferPinWait

Simon Riggs <simon@2ndQuadrant.com> writes:

On Tue, Aug 2, 2011 at 6:24 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:

Fix incorrect initialization of ProcGlobal->startupBufferPinWaitBufId.

It was initialized in the wrong place and to the wrong value. �With bad
luck this could result in incorrect query-cancellation failures in hot
standby sessions, should a HS backend be holding pin on buffer number 1
while trying to acquire a lock.

Did I miss a bug report?

No, this was something I happened across in code-reading a few weeks ago
and had a note to myself to fix. While looking at it today I found more
problems ... see second commit.

regards, tom lane

#4Simon Riggs
simon@2ndQuadrant.com
In reply to: Tom Lane (#3)
Re: pgsql: Fix incorrect initialization of ProcGlobal->startupBufferPinWait

On Tue, Aug 2, 2011 at 8:23 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:

Simon Riggs <simon@2ndQuadrant.com> writes:

On Tue, Aug 2, 2011 at 6:24 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:

Fix incorrect initialization of ProcGlobal->startupBufferPinWaitBufId.

It was initialized in the wrong place and to the wrong value.  With bad
luck this could result in incorrect query-cancellation failures in hot
standby sessions, should a HS backend be holding pin on buffer number 1
while trying to acquire a lock.

Did I miss a bug report?

No, this was something I happened across in code-reading a few weeks ago
and had a note to myself to fix.  While looking at it today I found more
problems ... see second commit.

I'm happy to fix problems I've caused that are reported to me.

--
 Simon Riggs                   http://www.2ndQuadrant.com/
 PostgreSQL Development, 24x7 Support, Training & Services