Re: fix bgworkers in EXEC_BACKEND
Andres Freund <andres@anarazel.de>
From: "anarazel@anarazel.de" <andres@anarazel.de>
To: Tom Lane <tgl@sss.pgh.pa.us>,Andres Freund <andres@2ndquadrant.com>
Cc: Heikki Linnakangas <hlinnakangas@vmware.com>, Alvaro Herrera <alvherre@2ndquadrant.com>, Pg Hackers <pgsql-hackers@postgresql.org>
Date: 2012-12-28T00:28:49Z
Lists: pgsql-hackers
Tom Lane <tgl@sss.pgh.pa.us> schrieb: >Andres Freund <andres@2ndquadrant.com> writes: >> I am still worried about the following scenario in the EXEC_BACKEND >case: > >> 1) postmaster starts >> 2) reads config >> 3) executes _PG_init for shared_preload_libraries >> 4) library 'abc' gets config value 'abc.num_workers = 2' and >registers as many workers >> 5) some time goes by, workers, backends start >> 6) abc.num_workers gets changed to 3, SIGHUP > >This is broken whether it's EXEC_BACKEND or not: you don't get to >change >anything that determines the number of workers post-startup. >num_workers should have been declared PGC_POSTMASTER. BTW, I think it happens not to be broken in the non EXEC_BACKEND case because the registration point for bgworkers is _PG_init which will only be called once without EXEC_BACKEND, so config changes to SIGHUP'able variables won't change a thing dangerous as the bgworker stuff is all set up. Andres --- Please excuse the brevity and formatting - I am writing this on my mobile phone.