Commit ba1868ba authored by Simon Riggs's avatar Simon Riggs

Minor bug fix and cleanup from self-review of sync rep queues patch.

parent 73f617f1
...@@ -673,7 +673,7 @@ CheckpointWriteDelay(int flags, double progress) ...@@ -673,7 +673,7 @@ CheckpointWriteDelay(int flags, double progress)
got_SIGHUP = false; got_SIGHUP = false;
ProcessConfigFile(PGC_SIGHUP); ProcessConfigFile(PGC_SIGHUP);
/* update global shmem state for sync rep */ /* update global shmem state for sync rep */
SyncRepUpdateSyncStandbysDefined(); UpdateSharedMemoryConfig();
} }
AbsorbFsyncRequests(); AbsorbFsyncRequests();
......
...@@ -4212,13 +4212,13 @@ sigusr1_handler(SIGNAL_ARGS) ...@@ -4212,13 +4212,13 @@ sigusr1_handler(SIGNAL_ARGS)
FatalError = false; FatalError = false;
/* /*
* Crank up the background writer. It doesn't matter if this fails, * Crank up the background writers. It doesn't matter if this fails,
* we'll just try again later. * we'll just try again later.
*/ */
Assert(BgWriterPID == 0);
BgWriterPID = StartBackgroundWriter();
Assert(CheckpointerPID == 0); Assert(CheckpointerPID == 0);
CheckpointerPID = StartCheckpointer(); CheckpointerPID = StartCheckpointer();
Assert(BgWriterPID == 0);
BgWriterPID = StartBackgroundWriter();
pmState = PM_RECOVERY; pmState = PM_RECOVERY;
} }
......
...@@ -62,9 +62,6 @@ char *SyncRepStandbyNames; ...@@ -62,9 +62,6 @@ char *SyncRepStandbyNames;
#define SyncStandbysDefined() \ #define SyncStandbysDefined() \
(SyncRepStandbyNames != NULL && SyncRepStandbyNames[0] != '\0') (SyncRepStandbyNames != NULL && SyncRepStandbyNames[0] != '\0')
#define SyncRepRequested() \
(max_wal_senders > 0 && synchronous_commit > SYNCHRONOUS_COMMIT_LOCAL_FLUSH)
static bool announce_next_takeover = true; static bool announce_next_takeover = true;
static int SyncRepWaitMode = SYNC_REP_NO_WAIT; static int SyncRepWaitMode = SYNC_REP_NO_WAIT;
...@@ -98,6 +95,7 @@ SyncRepWaitForLSN(XLogRecPtr XactCommitLSN) ...@@ -98,6 +95,7 @@ SyncRepWaitForLSN(XLogRecPtr XactCommitLSN)
{ {
char *new_status = NULL; char *new_status = NULL;
const char *old_status; const char *old_status;
int mode = SyncRepWaitMode;
/* /*
* Fast exit if user has not requested sync replication, or there are no * Fast exit if user has not requested sync replication, or there are no
...@@ -122,7 +120,7 @@ SyncRepWaitForLSN(XLogRecPtr XactCommitLSN) ...@@ -122,7 +120,7 @@ SyncRepWaitForLSN(XLogRecPtr XactCommitLSN)
* be a low cost check. * be a low cost check.
*/ */
if (!WalSndCtl->sync_standbys_defined || if (!WalSndCtl->sync_standbys_defined ||
XLByteLE(XactCommitLSN, WalSndCtl->lsn[SyncRepWaitMode])) XLByteLE(XactCommitLSN, WalSndCtl->lsn[mode]))
{ {
LWLockRelease(SyncRepLock); LWLockRelease(SyncRepLock);
return; return;
...@@ -134,8 +132,8 @@ SyncRepWaitForLSN(XLogRecPtr XactCommitLSN) ...@@ -134,8 +132,8 @@ SyncRepWaitForLSN(XLogRecPtr XactCommitLSN)
*/ */
MyProc->waitLSN = XactCommitLSN; MyProc->waitLSN = XactCommitLSN;
MyProc->syncRepState = SYNC_REP_WAITING; MyProc->syncRepState = SYNC_REP_WAITING;
SyncRepQueueInsert(SyncRepWaitMode); SyncRepQueueInsert(mode);
Assert(SyncRepQueueIsOrderedByLSN(SyncRepWaitMode)); Assert(SyncRepQueueIsOrderedByLSN(mode));
LWLockRelease(SyncRepLock); LWLockRelease(SyncRepLock);
/* Alter ps display to show waiting for sync rep. */ /* Alter ps display to show waiting for sync rep. */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment