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

Commit1e53fe0

Browse files
committed
Use PostgresSigHupHandler in more places.
There seems to be no reason for every background process to haveits own flag indicating that a config-file reload is needed.Instead, let's just use ConfigFilePending for that purposeeverywhere.Patch by me, reviewed by Andres Freund and Daniel Gustafsson.Discussion:http://postgr.es/m/CA+TgmoZwDk=BguVDVa+qdA6SBKef=PKbaKDQALTC_9qoz1mJqg@mail.gmail.com
1 parent5910d6c commit1e53fe0

File tree

8 files changed

+37
-156
lines changed

8 files changed

+37
-156
lines changed

‎src/backend/postmaster/autovacuum.c

Lines changed: 8 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,6 @@ static bool am_autovacuum_launcher = false;
138138
staticboolam_autovacuum_worker= false;
139139

140140
/* Flags set by signal handlers */
141-
staticvolatilesig_atomic_tgot_SIGHUP= false;
142141
staticvolatilesig_atomic_tgot_SIGUSR2= false;
143142
staticvolatilesig_atomic_tgot_SIGTERM= false;
144143

@@ -344,7 +343,6 @@ static void perform_work_item(AutoVacuumWorkItem *workitem);
344343
staticvoidautovac_report_activity(autovac_table*tab);
345344
staticvoidautovac_report_workitem(AutoVacuumWorkItem*workitem,
346345
constchar*nspname,constchar*relname);
347-
staticvoidav_sighup_handler(SIGNAL_ARGS);
348346
staticvoidavl_sigusr2_handler(SIGNAL_ARGS);
349347
staticvoidavl_sigterm_handler(SIGNAL_ARGS);
350348
staticvoidautovac_refresh_stats(void);
@@ -452,7 +450,7 @@ AutoVacLauncherMain(int argc, char *argv[])
452450
* backend, so we use the same signal handling. See equivalent code in
453451
* tcop/postgres.c.
454452
*/
455-
pqsignal(SIGHUP,av_sighup_handler);
453+
pqsignal(SIGHUP,PostgresSigHupHandler);
456454
pqsignal(SIGINT,StatementCancelHandler);
457455
pqsignal(SIGTERM,avl_sigterm_handler);
458456

@@ -805,9 +803,9 @@ HandleAutoVacLauncherInterrupts(void)
805803
if (got_SIGTERM)
806804
AutoVacLauncherShutdown();
807805

808-
if (got_SIGHUP)
806+
if (ConfigReloadPending)
809807
{
810-
got_SIGHUP= false;
808+
ConfigReloadPending= false;
811809
ProcessConfigFile(PGC_SIGHUP);
812810

813811
/* shutdown requested in config file? */
@@ -1405,18 +1403,6 @@ AutoVacWorkerFailed(void)
14051403
AutoVacuumShmem->av_signal[AutoVacForkFailed]= true;
14061404
}
14071405

1408-
/* SIGHUP: set flag to re-read config file at next convenient time */
1409-
staticvoid
1410-
av_sighup_handler(SIGNAL_ARGS)
1411-
{
1412-
intsave_errno=errno;
1413-
1414-
got_SIGHUP= true;
1415-
SetLatch(MyLatch);
1416-
1417-
errno=save_errno;
1418-
}
1419-
14201406
/* SIGUSR2: a worker is up and running, or just finished, or failed to fork */
14211407
staticvoid
14221408
avl_sigusr2_handler(SIGNAL_ARGS)
@@ -1539,7 +1525,7 @@ AutoVacWorkerMain(int argc, char *argv[])
15391525
* backend, so we use the same signal handling. See equivalent code in
15401526
* tcop/postgres.c.
15411527
*/
1542-
pqsignal(SIGHUP,av_sighup_handler);
1528+
pqsignal(SIGHUP,PostgresSigHupHandler);
15431529

15441530
/*
15451531
* SIGINT is used to signal canceling the current table's vacuum; SIGTERM
@@ -2332,9 +2318,9 @@ do_autovacuum(void)
23322318
/*
23332319
* Check for config changes before processing each collected table.
23342320
*/
2335-
if (got_SIGHUP)
2321+
if (ConfigReloadPending)
23362322
{
2337-
got_SIGHUP= false;
2323+
ConfigReloadPending= false;
23382324
ProcessConfigFile(PGC_SIGHUP);
23392325

23402326
/*
@@ -2580,9 +2566,9 @@ do_autovacuum(void)
25802566
* Check for config changes before acquiring lock for further jobs.
25812567
*/
25822568
CHECK_FOR_INTERRUPTS();
2583-
if (got_SIGHUP)
2569+
if (ConfigReloadPending)
25842570
{
2585-
got_SIGHUP= false;
2571+
ConfigReloadPending= false;
25862572
ProcessConfigFile(PGC_SIGHUP);
25872573
}
25882574

‎src/backend/postmaster/bgwriter.c

Lines changed: 3 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -89,15 +89,13 @@ static XLogRecPtr last_snapshot_lsn = InvalidXLogRecPtr;
8989
/*
9090
* Flags set by interrupt handlers for later service in the main loop.
9191
*/
92-
staticvolatilesig_atomic_tgot_SIGHUP= false;
9392
staticvolatilesig_atomic_tshutdown_requested= false;
9493

9594
staticvoidHandleBackgroundWriterInterrupts(void);
9695

9796
/* Signal handlers */
9897

9998
staticvoidbg_quickdie(SIGNAL_ARGS);
100-
staticvoidBgSigHupHandler(SIGNAL_ARGS);
10199
staticvoidReqShutdownHandler(SIGNAL_ARGS);
102100

103101

@@ -118,7 +116,7 @@ BackgroundWriterMain(void)
118116
/*
119117
* Properly accept or ignore signals that might be sent to us.
120118
*/
121-
pqsignal(SIGHUP,BgSigHupHandler);/* set flag to read config file */
119+
pqsignal(SIGHUP,PostgresSigHupHandler);/* set flag to read config file */
122120
pqsignal(SIGINT,SIG_IGN);
123121
pqsignal(SIGTERM,ReqShutdownHandler);/* shutdown */
124122
pqsignal(SIGQUIT,bg_quickdie);/* hard crash time */
@@ -363,9 +361,9 @@ BackgroundWriterMain(void)
363361
staticvoid
364362
HandleBackgroundWriterInterrupts(void)
365363
{
366-
if (got_SIGHUP)
364+
if (ConfigReloadPending)
367365
{
368-
got_SIGHUP= false;
366+
ConfigReloadPending= false;
369367
ProcessConfigFile(PGC_SIGHUP);
370368
}
371369

@@ -413,18 +411,6 @@ bg_quickdie(SIGNAL_ARGS)
413411
_exit(2);
414412
}
415413

416-
/* SIGHUP: set flag to re-read config file at next convenient time */
417-
staticvoid
418-
BgSigHupHandler(SIGNAL_ARGS)
419-
{
420-
intsave_errno=errno;
421-
422-
got_SIGHUP= true;
423-
SetLatch(MyLatch);
424-
425-
errno=save_errno;
426-
}
427-
428414
/* SIGTERM: set flag to shutdown and exit */
429415
staticvoid
430416
ReqShutdownHandler(SIGNAL_ARGS)

‎src/backend/postmaster/checkpointer.c

Lines changed: 5 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,6 @@ doubleCheckPointCompletionTarget = 0.5;
151151
/*
152152
* Flags set by interrupt handlers for later service in the main loop.
153153
*/
154-
staticvolatilesig_atomic_tgot_SIGHUP= false;
155154
staticvolatilesig_atomic_tshutdown_requested= false;
156155

157156
/*
@@ -179,7 +178,6 @@ static void UpdateSharedMemoryConfig(void);
179178
/* Signal handlers */
180179

181180
staticvoidchkpt_quickdie(SIGNAL_ARGS);
182-
staticvoidChkptSigHupHandler(SIGNAL_ARGS);
183181
staticvoidReqCheckpointHandler(SIGNAL_ARGS);
184182
staticvoidReqShutdownHandler(SIGNAL_ARGS);
185183

@@ -206,7 +204,7 @@ CheckpointerMain(void)
206204
* want to wait for the backends to exit, whereupon the postmaster will
207205
* tell us it's okay to shut down (via SIGUSR2).
208206
*/
209-
pqsignal(SIGHUP,ChkptSigHupHandler);/* set flag to read config file */
207+
pqsignal(SIGHUP,PostgresSigHupHandler);/* set flag to read config file */
210208
pqsignal(SIGINT,ReqCheckpointHandler);/* request checkpoint */
211209
pqsignal(SIGTERM,SIG_IGN);/* ignore SIGTERM */
212210
pqsignal(SIGQUIT,chkpt_quickdie);/* hard crash time */
@@ -535,9 +533,9 @@ CheckpointerMain(void)
535533
staticvoid
536534
HandleCheckpointerInterrupts(void)
537535
{
538-
if (got_SIGHUP)
536+
if (ConfigReloadPending)
539537
{
540-
got_SIGHUP= false;
538+
ConfigReloadPending= false;
541539
ProcessConfigFile(PGC_SIGHUP);
542540

543541
/*
@@ -685,9 +683,9 @@ CheckpointWriteDelay(int flags, double progress)
685683
!ImmediateCheckpointRequested()&&
686684
IsCheckpointOnSchedule(progress))
687685
{
688-
if (got_SIGHUP)
686+
if (ConfigReloadPending)
689687
{
690-
got_SIGHUP= false;
688+
ConfigReloadPending= false;
691689
ProcessConfigFile(PGC_SIGHUP);
692690
/* update shmem copies of config variables */
693691
UpdateSharedMemoryConfig();
@@ -835,18 +833,6 @@ chkpt_quickdie(SIGNAL_ARGS)
835833
_exit(2);
836834
}
837835

838-
/* SIGHUP: set flag to re-read config file at next convenient time */
839-
staticvoid
840-
ChkptSigHupHandler(SIGNAL_ARGS)
841-
{
842-
intsave_errno=errno;
843-
844-
got_SIGHUP= true;
845-
SetLatch(MyLatch);
846-
847-
errno=save_errno;
848-
}
849-
850836
/* SIGINT: set flag to run a normal checkpoint right away */
851837
staticvoid
852838
ReqCheckpointHandler(SIGNAL_ARGS)

‎src/backend/postmaster/pgarch.c

Lines changed: 5 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,6 @@ static time_t last_sigterm_time = 0;
8383
/*
8484
* Flags set by interrupt handlers for later service in the main loop.
8585
*/
86-
staticvolatilesig_atomic_tgot_SIGHUP= false;
8786
staticvolatilesig_atomic_tgot_SIGTERM= false;
8887
staticvolatilesig_atomic_twakened= false;
8988
staticvolatilesig_atomic_tready_to_stop= false;
@@ -98,7 +97,6 @@ static pid_t pgarch_forkexec(void);
9897

9998
NON_EXEC_STATICvoidPgArchiverMain(intargc,char*argv[])pg_attribute_noreturn();
10099
staticvoidpgarch_exit(SIGNAL_ARGS);
101-
staticvoidArchSigHupHandler(SIGNAL_ARGS);
102100
staticvoidArchSigTermHandler(SIGNAL_ARGS);
103101
staticvoidpgarch_waken(SIGNAL_ARGS);
104102
staticvoidpgarch_waken_stop(SIGNAL_ARGS);
@@ -229,7 +227,7 @@ PgArchiverMain(int argc, char *argv[])
229227
* Ignore all signals usually bound to some action in the postmaster,
230228
* except for SIGHUP, SIGTERM, SIGUSR1, SIGUSR2, and SIGQUIT.
231229
*/
232-
pqsignal(SIGHUP,ArchSigHupHandler);
230+
pqsignal(SIGHUP,PostgresSigHupHandler);
233231
pqsignal(SIGINT,SIG_IGN);
234232
pqsignal(SIGTERM,ArchSigTermHandler);
235233
pqsignal(SIGQUIT,pgarch_exit);
@@ -259,19 +257,6 @@ pgarch_exit(SIGNAL_ARGS)
259257
exit(1);
260258
}
261259

262-
/* SIGHUP signal handler for archiver process */
263-
staticvoid
264-
ArchSigHupHandler(SIGNAL_ARGS)
265-
{
266-
intsave_errno=errno;
267-
268-
/* set flag to re-read config file at next convenient time */
269-
got_SIGHUP= true;
270-
SetLatch(MyLatch);
271-
272-
errno=save_errno;
273-
}
274-
275260
/* SIGTERM signal handler for archiver process */
276261
staticvoid
277262
ArchSigTermHandler(SIGNAL_ARGS)
@@ -348,9 +333,9 @@ pgarch_MainLoop(void)
348333
time_to_stop=ready_to_stop;
349334

350335
/* Check for config update */
351-
if (got_SIGHUP)
336+
if (ConfigReloadPending)
352337
{
353-
got_SIGHUP= false;
338+
ConfigReloadPending= false;
354339
ProcessConfigFile(PGC_SIGHUP);
355340
}
356341

@@ -457,9 +442,9 @@ pgarch_ArchiverCopyLoop(void)
457442
* setting for archive_command as soon as possible, even if there
458443
* is a backlog of files to be archived.
459444
*/
460-
if (got_SIGHUP)
445+
if (ConfigReloadPending)
461446
{
462-
got_SIGHUP= false;
447+
ConfigReloadPending= false;
463448
ProcessConfigFile(PGC_SIGHUP);
464449
}
465450

‎src/backend/postmaster/pgstat.c

Lines changed: 7 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,6 @@ static List *pending_write_requests = NIL;
264264

265265
/* Signal handler flags */
266266
staticvolatileboolneed_exit= false;
267-
staticvolatileboolgot_SIGHUP= false;
268267

269268
/*
270269
* Total time charged to functions so far in the current backend.
@@ -285,7 +284,6 @@ static pid_t pgstat_forkexec(void);
285284
NON_EXEC_STATICvoidPgstatCollectorMain(intargc,char*argv[])pg_attribute_noreturn();
286285
staticvoidpgstat_exit(SIGNAL_ARGS);
287286
staticvoidpgstat_beshutdown_hook(intcode,Datumarg);
288-
staticvoidpgstat_sighup_handler(SIGNAL_ARGS);
289287

290288
staticPgStat_StatDBEntry*pgstat_get_db_entry(Oiddatabaseid,boolcreate);
291289
staticPgStat_StatTabEntry*pgstat_get_tab_entry(PgStat_StatDBEntry*dbentry,
@@ -4434,7 +4432,7 @@ PgstatCollectorMain(int argc, char *argv[])
44344432
* except SIGHUP and SIGQUIT. Note we don't need a SIGUSR1 handler to
44354433
* support latch operations, because we only use a local latch.
44364434
*/
4437-
pqsignal(SIGHUP,pgstat_sighup_handler);
4435+
pqsignal(SIGHUP,PostgresSigHupHandler);
44384436
pqsignal(SIGINT,SIG_IGN);
44394437
pqsignal(SIGTERM,SIG_IGN);
44404438
pqsignal(SIGQUIT,pgstat_exit);
@@ -4466,10 +4464,10 @@ PgstatCollectorMain(int argc, char *argv[])
44664464
* message. (This effectively means that if backends are sending us stuff
44674465
* like mad, we won't notice postmaster death until things slack off a
44684466
* bit; which seems fine.)To do that, we have an inner loop that
4469-
* iterates as long as recv() succeeds. We dorecognize got_SIGHUP inside
4470-
* the inner loop, which means that such interrupts will get serviced but
4471-
* the latch won't get cleared until next time there is a break in the
4472-
* action.
4467+
* iterates as long as recv() succeeds. We docheck ConfigReloadPending
4468+
*insidethe inner loop, which means that such interrupts will get
4469+
*serviced butthe latch won't get cleared until next time there is a
4470+
*break in theaction.
44734471
*/
44744472
for (;;)
44754473
{
@@ -4491,9 +4489,9 @@ PgstatCollectorMain(int argc, char *argv[])
44914489
/*
44924490
* Reload configuration if we got SIGHUP from the postmaster.
44934491
*/
4494-
if (got_SIGHUP)
4492+
if (ConfigReloadPending)
44954493
{
4496-
got_SIGHUP= false;
4494+
ConfigReloadPending= false;
44974495
ProcessConfigFile(PGC_SIGHUP);
44984496
}
44994497

@@ -4691,18 +4689,6 @@ pgstat_exit(SIGNAL_ARGS)
46914689
errno=save_errno;
46924690
}
46934691

4694-
/* SIGHUP handler for collector process */
4695-
staticvoid
4696-
pgstat_sighup_handler(SIGNAL_ARGS)
4697-
{
4698-
intsave_errno=errno;
4699-
4700-
got_SIGHUP= true;
4701-
SetLatch(MyLatch);
4702-
4703-
errno=save_errno;
4704-
}
4705-
47064692
/*
47074693
* Subroutine to clear stats in a database entry
47084694
*

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp