diff options
| author | Tom Lane <tgl@sss.pgh.pa.us> | 2011-08-02 13:24:06 -0400 |
|---|---|---|
| committer | Tom Lane <tgl@sss.pgh.pa.us> | 2011-08-02 13:24:06 -0400 |
| commit | 0f904c95a4000caa717868d9bfaf5a423eefdb0b (patch) | |
| tree | 96de5a526adace0462393665b47d71a05d843b23 /src/backend/storage/buffer/bufmgr.c | |
| parent | f00fbad6bd43141faae05cd13a518fd28ae94673 (diff) | |
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.
Diffstat (limited to 'src/backend/storage/buffer/bufmgr.c')
| -rw-r--r-- | src/backend/storage/buffer/bufmgr.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/backend/storage/buffer/bufmgr.c b/src/backend/storage/buffer/bufmgr.c index 3b6938135ac..8a66896b5cf 100644 --- a/src/backend/storage/buffer/bufmgr.c +++ b/src/backend/storage/buffer/bufmgr.c @@ -2422,10 +2422,11 @@ LockBufferForCleanup(Buffer buffer) /* Wait to be signaled by UnpinBuffer() */ if (InHotStandby) { - /* Share the bufid that Startup process waits on */ + /* Publish the bufid that Startup process waits on */ SetStartupBufferPinWaitBufId(buffer - 1); /* Set alarm and then wait to be signaled by UnpinBuffer() */ ResolveRecoveryConflictWithBufferPin(); + /* Reset the published bufid */ SetStartupBufferPinWaitBufId(-1); } else |
