diff options
Diffstat (limited to 'src/backend/storage')
| -rw-r--r-- | src/backend/storage/buffer/bufmgr.c | 3 | ||||
| -rw-r--r-- | src/backend/storage/lmgr/proc.c | 10 |
2 files changed, 6 insertions, 7 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 diff --git a/src/backend/storage/lmgr/proc.c b/src/backend/storage/lmgr/proc.c index c9993a79dba..2608fea9451 100644 --- a/src/backend/storage/lmgr/proc.c +++ b/src/backend/storage/lmgr/proc.c @@ -179,6 +179,9 @@ InitProcGlobal(void) */ ProcGlobal->freeProcs = NULL; ProcGlobal->autovacFreeProcs = NULL; + ProcGlobal->startupProc = NULL; + ProcGlobal->startupProcPid = 0; + ProcGlobal->startupBufferPinWaitBufId = -1; ProcGlobal->spins_per_delay = DEFAULT_SPINS_PER_DELAY; @@ -487,7 +490,6 @@ PublishStartupProcessInformation(void) procglobal->startupProc = MyProc; procglobal->startupProcPid = MyProcPid; - procglobal->startupBufferPinWaitBufId = 0; SpinLockRelease(ProcStructLock); } @@ -514,14 +516,10 @@ SetStartupBufferPinWaitBufId(int bufid) int GetStartupBufferPinWaitBufId(void) { - int bufid; - /* use volatile pointer to prevent code rearrangement */ volatile PROC_HDR *procglobal = ProcGlobal; - bufid = procglobal->startupBufferPinWaitBufId; - - return bufid; + return procglobal->startupBufferPinWaitBufId; } /* |
