aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Haas <rhaas@postgresql.org>2019-03-18 15:21:09 -0400
committerRobert Haas <rhaas@postgresql.org>2019-03-18 15:30:32 -0400
commitfc8b39a46eb7132edc0165f23b738a2292ee9ca9 (patch)
tree2ac598f539e18e165faa479e9b0dd53b4b492021
parentdcf2a0db8529b81a57d421e0fd59297d10d5f0b6 (diff)
downloadpostgresql-fc8b39a46eb7132edc0165f23b738a2292ee9ca9.tar.gz
postgresql-fc8b39a46eb7132edc0165f23b738a2292ee9ca9.zip
Don't auto-restart per-database autoprewarm workers.
We should try to prewarm each database only once. Otherwise, if prewarming fails for some reason, it will just keep retrying in an infnite loop. This can happen if, for example, the database has been dropped. The existing code was intended to implement the try-once behavior, but failed to do so because it neglected to set worker.bgw_restart_time to BGW_NEVER_RESTART. Mithun Cy, per a report from Hans Buschmann Discussion: http://postgr.es/m/CA+hUKGKpQJCWcgyy3QTC9vdn6uKAR_8r__A-MMm2GYfj45caag@mail.gmail.com
-rw-r--r--contrib/pg_prewarm/autoprewarm.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/contrib/pg_prewarm/autoprewarm.c b/contrib/pg_prewarm/autoprewarm.c
index cc5e2dd89cd..3bd0010bf8b 100644
--- a/contrib/pg_prewarm/autoprewarm.c
+++ b/contrib/pg_prewarm/autoprewarm.c
@@ -844,6 +844,7 @@ apw_start_database_worker(void)
worker.bgw_flags =
BGWORKER_SHMEM_ACCESS | BGWORKER_BACKEND_DATABASE_CONNECTION;
worker.bgw_start_time = BgWorkerStart_ConsistentState;
+ worker.bgw_restart_time = BGW_NEVER_RESTART;
strcpy(worker.bgw_library_name, "pg_prewarm");
strcpy(worker.bgw_function_name, "autoprewarm_database_main");
strcpy(worker.bgw_name, "autoprewarm worker");