trivial-av-conversion-cfi.patch
application/octet-stream
Filename: trivial-av-conversion-cfi.patch
Type: application/octet-stream
Part: 0
Patch
Format: unified
| File | + | − |
|---|---|---|
| src/backend/postmaster/autovacuum.c | 8 | 26 |
diff --git a/src/backend/postmaster/autovacuum.c b/src/backend/postmaster/autovacuum.c
index c1dd8168ca..d6b8738d28 100644
--- a/src/backend/postmaster/autovacuum.c
+++ b/src/backend/postmaster/autovacuum.c
@@ -140,7 +140,6 @@ static bool am_autovacuum_worker = false;
/* Flags set by signal handlers */
static volatile sig_atomic_t got_SIGHUP = false;
static volatile sig_atomic_t got_SIGUSR2 = false;
-static volatile sig_atomic_t got_SIGTERM = false;
/* Comparison points for determining whether freeze_max_age is exceeded */
static TransactionId recentXid;
@@ -344,7 +343,6 @@ static void autovac_report_workitem(AutoVacuumWorkItem *workitem,
const char *nspname, const char *relname);
static void av_sighup_handler(SIGNAL_ARGS);
static void avl_sigusr2_handler(SIGNAL_ARGS);
-static void avl_sigterm_handler(SIGNAL_ARGS);
static void autovac_refresh_stats(void);
@@ -452,7 +450,7 @@ AutoVacLauncherMain(int argc, char *argv[])
*/
pqsignal(SIGHUP, av_sighup_handler);
pqsignal(SIGINT, StatementCancelHandler);
- pqsignal(SIGTERM, avl_sigterm_handler);
+ pqsignal(SIGTERM, die);
pqsignal(SIGQUIT, quickdie);
InitializeTimeouts(); /* establishes SIGALRM handler */
@@ -552,9 +550,8 @@ AutoVacLauncherMain(int argc, char *argv[])
/* Now we can allow interrupts again */
RESUME_INTERRUPTS();
- /* if in shutdown mode, no need for anything further; just go away */
- if (got_SIGTERM)
- goto shutdown;
+ /* And check for them, too */
+ CHECK_FOR_INTERRUPTS();
/*
* Sleep at least 1 second after any error. We don't want to be
@@ -605,8 +602,8 @@ AutoVacLauncherMain(int argc, char *argv[])
*/
if (!AutoVacuumingActive())
{
- if (!got_SIGTERM)
- do_start_worker();
+ CHECK_FOR_INTERRUPTS();
+ do_start_worker();
proc_exit(0); /* done */
}
@@ -622,12 +619,14 @@ AutoVacLauncherMain(int argc, char *argv[])
rebuild_database_list(InvalidOid);
/* loop until shutdown request */
- while (!got_SIGTERM)
+ while (1)
{
struct timeval nap;
TimestampTz current_time = 0;
bool can_launch;
+ CHECK_FOR_INTERRUPTS();
+
/*
* This loop is a bit different from the normal use of WaitLatch,
* because we'd like to sleep before the first launch of a child
@@ -652,10 +651,6 @@ AutoVacLauncherMain(int argc, char *argv[])
/* Process sinval catchup interrupts that happened while sleeping */
ProcessCatchupInterrupt();
- /* the normal shutdown case */
- if (got_SIGTERM)
- break;
-
if (got_SIGHUP)
{
got_SIGHUP = false;
@@ -814,7 +809,6 @@ AutoVacLauncherMain(int argc, char *argv[])
}
/* Normal exit from the autovac launcher is here */
-shutdown:
ereport(DEBUG1,
(errmsg("autovacuum launcher shutting down")));
AutoVacuumShmem->av_launcherpid = 0;
@@ -1411,18 +1405,6 @@ avl_sigusr2_handler(SIGNAL_ARGS)
errno = save_errno;
}
-/* SIGTERM: time to die */
-static void
-avl_sigterm_handler(SIGNAL_ARGS)
-{
- int save_errno = errno;
-
- got_SIGTERM = true;
- SetLatch(MyLatch);
-
- errno = save_errno;
-}
-
/********************************************************************
* AUTOVACUUM WORKER CODE