Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitd0c231d

Browse files
committed
Cosmetic adjustments for postmaster's handling of checkpointer.
Correct some comments, order some operations a bit more consistently.No functional changes.
1 parent2cfb1c6 commitd0c231d

File tree

2 files changed

+34
-26
lines changed

2 files changed

+34
-26
lines changed

‎src/backend/postmaster/bgwriter.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@
1515
* The bgwriter is started by the postmaster as soon as the startup subprocess
1616
* finishes, or as soon as recovery begins if we are doing archive recovery.
1717
* It remains alive until the postmaster commands it to terminate.
18-
* Normal termination is bySIGUSR2, which instructs the bgwriter to exit(0).
19-
* Emergency termination is by SIGQUIT; like any
20-
*backend, the bgwriter willsimply abort and exit on SIGQUIT.
18+
* Normal termination is bySIGTERM, which instructs the bgwriter to exit(0).
19+
* Emergency termination is by SIGQUIT; like any backend, the bgwriter will
20+
* simply abort and exit on SIGQUIT.
2121
*
2222
* If the bgwriter exits unexpectedly, the postmaster treats that the same
2323
* as a backend crash: shared memory may be corrupted, so remaining backends

‎src/backend/postmaster/postmaster.c

Lines changed: 31 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -239,13 +239,13 @@ static bool RecoveryError = false;/* T if WAL recovery failed */
239239
* hot standby during archive recovery.
240240
*
241241
* When the startup process is ready to start archive recovery, it signals the
242-
* postmaster, and we switch to PM_RECOVERY state. The background writeris
243-
* launched, while the startup process continues applying WAL.If Hot Standby
244-
* is enabled, then, after reaching a consistent point in WAL redo, startup
245-
* process signals us again, and we switch to PM_HOT_STANDBY state and
246-
* begin accepting connections to perform read-only queries. When archive
247-
* recovery is finished, the startup process exits with exit code 0 and we
248-
* switch to PM_RUN state.
242+
* postmaster, and we switch to PM_RECOVERY state. The background writerand
243+
*checkpointer arelaunched, while the startup process continues applying WAL.
244+
*If Hot Standbyis enabled, then, after reaching a consistent point in WAL
245+
*redo, startupprocess signals us again, and we switch to PM_HOT_STANDBY
246+
*state andbegin accepting connections to perform read-only queries. When
247+
*archiverecovery is finished, the startup process exits with exit code 0
248+
*and weswitch to PM_RUN state.
249249
*
250250
* Normal child backends can only be launched when we are in PM_RUN or
251251
* PM_HOT_STANDBY state. (We also allow launch of normal
@@ -1038,7 +1038,7 @@ PostmasterMain(int argc, char *argv[])
10381038
* handling setup of child processes. See tcop/postgres.c,
10391039
* bootstrap/bootstrap.c, postmaster/bgwriter.c, postmaster/walwriter.c,
10401040
* postmaster/autovacuum.c, postmaster/pgarch.c, postmaster/pgstat.c,
1041-
* postmaster/syslogger.c and postmaster/checkpointer.c
1041+
* postmaster/syslogger.c and postmaster/checkpointer.c.
10421042
*/
10431043
pqinitmask();
10441044
PG_SETMASK(&BlockSig);
@@ -1373,10 +1373,10 @@ ServerLoop(void)
13731373
/*
13741374
* If no background writer process is running, and we are not in a
13751375
* state that prevents it, start one. It doesn't matter if this
1376-
* fails, we'll just try again later.
1376+
* fails, we'll just try again later. Likewise for the checkpointer.
13771377
*/
13781378
if (pmState==PM_RUN||pmState==PM_RECOVERY||
1379-
pmState==PM_HOT_STANDBY)
1379+
pmState==PM_HOT_STANDBY)
13801380
{
13811381
if (BgWriterPID==0)
13821382
BgWriterPID=StartBackgroundWriter();
@@ -1386,7 +1386,8 @@ ServerLoop(void)
13861386

13871387
/*
13881388
* Likewise, if we have lost the walwriter process, try to start a new
1389-
* one.
1389+
* one. But this is needed only in normal operation (else we cannot
1390+
* be writing any new WAL).
13901391
*/
13911392
if (WalWriterPID==0&&pmState==PM_RUN)
13921393
WalWriterPID=StartWalWriter();
@@ -2131,11 +2132,12 @@ pmdie(SIGNAL_ARGS)
21312132
/* and the autovac launcher too */
21322133
if (AutoVacPID!=0)
21332134
signal_child(AutoVacPID,SIGTERM);
2135+
/* and the bgwriter too */
2136+
if (BgWriterPID!=0)
2137+
signal_child(BgWriterPID,SIGTERM);
21342138
/* and the walwriter too */
21352139
if (WalWriterPID!=0)
21362140
signal_child(WalWriterPID,SIGTERM);
2137-
if (BgWriterPID!=0)
2138-
signal_child(BgWriterPID,SIGTERM);
21392141

21402142
/*
21412143
* If we're in recovery, we can't kill the startup process
@@ -2174,13 +2176,17 @@ pmdie(SIGNAL_ARGS)
21742176

21752177
if (StartupPID!=0)
21762178
signal_child(StartupPID,SIGTERM);
2177-
if (WalReceiverPID!=0)
2178-
signal_child(WalReceiverPID,SIGTERM);
21792179
if (BgWriterPID!=0)
21802180
signal_child(BgWriterPID,SIGTERM);
2181+
if (WalReceiverPID!=0)
2182+
signal_child(WalReceiverPID,SIGTERM);
21812183
if (pmState==PM_RECOVERY)
21822184
{
2183-
/* only checkpointer is active in this state */
2185+
/*
2186+
* Only startup, bgwriter, and checkpointer should be active
2187+
* in this state; we just signaled the first two, and we don't
2188+
* want to kill checkpointer yet.
2189+
*/
21842190
pmState=PM_WAIT_BACKENDS;
21852191
}
21862192
elseif (pmState==PM_RUN||
@@ -2362,21 +2368,21 @@ reaper(SIGNAL_ARGS)
23622368
}
23632369

23642370
/*
2365-
* Crank up background tasks, if we didn't do that already
2371+
* Crank upthebackground tasks, if we didn't do that already
23662372
* when we entered consistent recovery state. It doesn't matter
23672373
* if this fails, we'll just try again later.
23682374
*/
23692375
if (BgWriterPID==0)
23702376
BgWriterPID=StartBackgroundWriter();
23712377
if (CheckpointerPID==0)
23722378
CheckpointerPID=StartCheckpointer();
2379+
if (WalWriterPID==0)
2380+
WalWriterPID=StartWalWriter();
23732381

23742382
/*
23752383
* Likewise, start other special children as needed. In a restart
23762384
* situation, some of them may be alive already.
23772385
*/
2378-
if (WalWriterPID==0)
2379-
WalWriterPID=StartWalWriter();
23802386
if (!IsBinaryUpgrade&&AutoVacuumingActive()&&AutoVacPID==0)
23812387
AutoVacPID=StartAutoVacLauncher();
23822388
if (XLogArchivingActive()&&PgArchPID==0)
@@ -2392,7 +2398,9 @@ reaper(SIGNAL_ARGS)
23922398
}
23932399

23942400
/*
2395-
* Was it the bgwriter?
2401+
* Was it the bgwriter? Normal exit can be ignored; we'll start a
2402+
* new one at the next iteration of the postmaster's main loop, if
2403+
* necessary. Any other exit condition is treated as a crash.
23962404
*/
23972405
if (pid==BgWriterPID)
23982406
{
@@ -4228,13 +4236,13 @@ sigusr1_handler(SIGNAL_ARGS)
42284236
FatalError= false;
42294237

42304238
/*
4231-
* Crank up the backgroundwriters.It doesn't matter if this fails,
4239+
* Crank up the backgroundtasks.It doesn't matter if this fails,
42324240
* we'll just try again later.
42334241
*/
4234-
Assert(CheckpointerPID==0);
4235-
CheckpointerPID=StartCheckpointer();
42364242
Assert(BgWriterPID==0);
42374243
BgWriterPID=StartBackgroundWriter();
4244+
Assert(CheckpointerPID==0);
4245+
CheckpointerPID=StartCheckpointer();
42384246

42394247
pmState=PM_RECOVERY;
42404248
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp