]> granicus.if.org Git - postgresql/commitdiff
Minor bug fix and cleanup from self-review of sync rep queues patch.
authorSimon Riggs <simon@2ndQuadrant.com>
Mon, 30 Jan 2012 14:36:17 +0000 (14:36 +0000)
committerSimon Riggs <simon@2ndQuadrant.com>
Mon, 30 Jan 2012 14:36:17 +0000 (14:36 +0000)
src/backend/postmaster/checkpointer.c
src/backend/postmaster/postmaster.c
src/backend/replication/syncrep.c

index 178db7dba36fc2fdc9b999b7759794e0347247b4..c9473f7bad74946e9ff64310d0a6b75f900d94f1 100644 (file)
@@ -673,7 +673,7 @@ CheckpointWriteDelay(int flags, double progress)
                        got_SIGHUP = false;
                        ProcessConfigFile(PGC_SIGHUP);
                        /* update global shmem state for sync rep */
-                       SyncRepUpdateSyncStandbysDefined();
+                       UpdateSharedMemoryConfig();
                }
 
                AbsorbFsyncRequests();
index 9d242cbfcb7c1a8dc7af571a7b29af7b601dcc41..05db29cb93bce018a596deb2fa964335840d5af8 100644 (file)
@@ -4212,13 +4212,13 @@ sigusr1_handler(SIGNAL_ARGS)
                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.
                 */
-               Assert(BgWriterPID == 0);
-               BgWriterPID = StartBackgroundWriter();
                Assert(CheckpointerPID == 0);
                CheckpointerPID = StartCheckpointer();
+               Assert(BgWriterPID == 0);
+               BgWriterPID = StartBackgroundWriter();
 
                pmState = PM_RECOVERY;
        }
index 81b1fb4e8d4197f90ce94f35485e6a173f36d261..8977327c8c658b70a9047b8754e61d35bd5e3a6c 100644 (file)
@@ -62,9 +62,6 @@ char     *SyncRepStandbyNames;
 #define SyncStandbysDefined() \
        (SyncRepStandbyNames != NULL && SyncRepStandbyNames[0] != '\0')
 
-#define SyncRepRequested() \
-       (max_wal_senders > 0 && synchronous_commit > SYNCHRONOUS_COMMIT_LOCAL_FLUSH)
-
 static bool announce_next_takeover = true;
 
 static int     SyncRepWaitMode = SYNC_REP_NO_WAIT;
@@ -98,6 +95,7 @@ SyncRepWaitForLSN(XLogRecPtr XactCommitLSN)
 {
        char       *new_status = NULL;
        const char *old_status;
+       int                     mode = SyncRepWaitMode;
 
        /*
         * Fast exit if user has not requested sync replication, or there are no
@@ -122,7 +120,7 @@ SyncRepWaitForLSN(XLogRecPtr XactCommitLSN)
         * be a low cost check.
         */
        if (!WalSndCtl->sync_standbys_defined ||
-               XLByteLE(XactCommitLSN, WalSndCtl->lsn[SyncRepWaitMode]))
+               XLByteLE(XactCommitLSN, WalSndCtl->lsn[mode]))
        {
                LWLockRelease(SyncRepLock);
                return;
@@ -134,8 +132,8 @@ SyncRepWaitForLSN(XLogRecPtr XactCommitLSN)
         */
        MyProc->waitLSN = XactCommitLSN;
        MyProc->syncRepState = SYNC_REP_WAITING;
-       SyncRepQueueInsert(SyncRepWaitMode);
-       Assert(SyncRepQueueIsOrderedByLSN(SyncRepWaitMode));
+       SyncRepQueueInsert(mode);
+       Assert(SyncRepQueueIsOrderedByLSN(mode));
        LWLockRelease(SyncRepLock);
 
        /* Alter ps display to show waiting for sync rep. */