diff options
-rw-r--r-- | src/backend/postmaster/autovacuum.c | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/src/backend/postmaster/autovacuum.c b/src/backend/postmaster/autovacuum.c index ca4e03590df..3d57c453772 100644 --- a/src/backend/postmaster/autovacuum.c +++ b/src/backend/postmaster/autovacuum.c @@ -526,6 +526,27 @@ AutoVacLauncherMain(int argc, char *argv[]) /* must unblock signals before calling rebuild_database_list */ PG_SETMASK(&UnBlockSig); + /* + * Force zero_damaged_pages OFF in the autovac process, even if it is set + * in postgresql.conf. We don't really want such a dangerous option being + * applied non-interactively. + */ + SetConfigOption("zero_damaged_pages", "false", PGC_SUSET, PGC_S_OVERRIDE); + + /* + * Force statement_timeout to zero to avoid a timeout setting from + * preventing regular maintenance from being executed. + */ + SetConfigOption("statement_timeout", "0", PGC_SUSET, PGC_S_OVERRIDE); + + /* + * Force default_transaction_isolation to READ COMMITTED. We don't + * want to pay the overhead of serializable mode, nor add any risk + * of causing deadlocks or delaying other transactions. + */ + SetConfigOption("default_transaction_isolation", "read committed", + PGC_SUSET, PGC_S_OVERRIDE); + /* in emergency mode, just start a worker and go away */ if (!AutoVacuumingActive()) { @@ -1528,12 +1549,21 @@ AutoVacWorkerMain(int argc, char *argv[]) SetConfigOption("statement_timeout", "0", PGC_SUSET, PGC_S_OVERRIDE); /* + * Force default_transaction_isolation to READ COMMITTED. We don't + * want to pay the overhead of serializable mode, nor add any risk + * of causing deadlocks or delaying other transactions. + */ + SetConfigOption("default_transaction_isolation", "read committed", + PGC_SUSET, PGC_S_OVERRIDE); + + /* * Force synchronous replication off to allow regular maintenance even if * we are waiting for standbys to connect. This is important to ensure we * aren't blocked from performing anti-wraparound tasks. */ if (synchronous_commit > SYNCHRONOUS_COMMIT_LOCAL_FLUSH) - SetConfigOption("synchronous_commit", "local", PGC_SUSET, PGC_S_OVERRIDE); + SetConfigOption("synchronous_commit", "local", + PGC_SUSET, PGC_S_OVERRIDE); /* * Get the info about the database we're going to work on. |