On Thu, Apr 7, 2016 at 1:22 PM, Amit Kapila <amit.kapil...@gmail.com> wrote: > On Wed, Apr 6, 2016 at 8:11 PM, Fujii Masao <masao.fu...@gmail.com> wrote: >> >> On Wed, Apr 6, 2016 at 11:14 PM, Amit Kapila <amit.kapil...@gmail.com> >> wrote: >> > On Wed, Apr 6, 2016 at 7:03 PM, Fujii Masao <masao.fu...@gmail.com> >> > wrote: >> >> >> >> On Wed, Apr 6, 2016 at 8:59 PM, Amit Kapila <amit.kapil...@gmail.com> >> >> wrote: >> >> > >> >> >> BTW, we can move SyncRepUpdateConfig() just after >> >> >> ProcessConfigFile() >> >> >> from pg_stat_get_wal_senders() and every backends always parse the >> >> >> value >> >> >> of s_s_names when the setting is changed. >> >> >> >> >> > >> >> > That sounds appropriate, but not sure what is exact place to call it. >> >> >> >> Maybe just after the following ProcessConfigFile(). >> >> >> >> ----------------------------------------- >> >> /* >> >> * (6) check for any other interesting events that happened while we >> >> * slept. >> >> */ >> >> if (got_SIGHUP) >> >> { >> >> got_SIGHUP = false; >> >> ProcessConfigFile(PGC_SIGHUP); >> >> } >> >> ----------------------------------------- >> >> >> >> If we do the move, we also need to either (1) make postmaster call >> >> SyncRepUpdateConfig() and pass the parsed result to any forked backends >> >> via a file like write_nondefault_variables() does for EXEC_BACKEND >> >> environment, or (2) make a backend call SyncRepUpdateConfig() during >> >> its initialization phase so that the first call of pg_stat_replication >> >> can use the parsed result. (1) seems complicated and overkill. >> >> (2) may add very small overhead into the fork of a backend. It would >> >> be almost negligible, though. So which logic should we adopt? >> >> >> > >> > Won't it be possible to have assign_* function for >> > synchronous_standby_names >> > as we have for some of the other settings like assign_XactIsoLevel and >> > then >> > call SyncRepUpdateConfig() in that function? >> >> It's possible, but still seems to need (1), i.e., the variable that >> assign_XXX >> function assigned needs to be passed to a backend via file for >> EXEC_BACKEND >> environment. >> > > But for that, I think we don't need to do anything extra. I mean > write_nondefault_variables() will automatically write the non-default value > of variable and then during backend initialization, it will call > read_nondefault_variables which will call set_config_option for non-default > parameters and that should set the required value if we have assign_* > function defined for the variable.
Yes if the variable that we'd like to pass to a backend is BOOL, INT, REAL, STRING or ENUM. But SyncRepConfig variable is a bit more complicated. So ISTM that write_one_nondefault_variable() needs to be updated so that SyncRepConfig is written to a file. Regards, -- Fujii Masao -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers