From: | Andres Freund <andres(at)anarazel(dot)de> |
---|---|
To: | Tatsuo Ishii <ishii(at)sraoss(dot)co(dot)jp> |
Cc: | pgsql-hackers(at)postgresql(dot)org |
Subject: | Re: Parameter status message not sent? |
Date: | 2018-02-14 02:26:31 |
Message-ID: | 20180214022631.dorxzt2fjbf4vnqu@alap3.anarazel.de |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On 2018-02-14 11:12:30 +0900, Tatsuo Ishii wrote:
> According to the manual, backend sends a parameter status message when
> certain configuration variable has been changed and SIGHUP signal is sent.
> https://www.postgresql.org/docs/10/static/protocol-flow.html#PROTOCOL-ASYNC
>
> ParameterStatus messages will be generated whenever the active value
> changes for any of the parameters the backend believes the frontend
> should know about. Most commonly this occurs in response to a SET
> SQL command executed by the frontend, and this case is effectively
> synchronous ― but it is also possible for parameter status changes
> to occur because the administrator changed a configuration file and
> then sent the SIGHUP signal to the server.
>
> So I connected to PostgreSQL using psql and attached strace to psql.
> Then I changed standard_conforming_strings and executed pg_ctl
> reload. The PostgreSQL log shows:
>
> 12073 2018-02-14 11:05:22 JST LOG: received SIGHUP, reloading configuration files
> 12073 2018-02-14 11:05:22 JST LOG: parameter "standard_conforming_strings" changed to "off"
> 12073 2018-02-14 11:05:22 JST DEBUG: sending signal 1 to process 12158
>
> But as far as strace tells, nothing was sent to psql. Is this expected?
It'll only get sent to the client the next time the server processes a
query. We can't just at arbitrary points reload the config file or send
messages out. The SIGHUP handler just sets ConfigReloadPending which
PostgresMain() then processes:
/*
* (6) check for any other interesting events that happened while we
* slept.
*/
if (ConfigReloadPending)
{
ConfigReloadPending = false;
ProcessConfigFile(PGC_SIGHUP);
}
which'll then, in turn, send out ParameterStatus messages for changed
GUC_REPORT GUCs.
Greetings,
Andres Freund
From | Date | Subject | |
---|---|---|---|
Next Message | Craig Ringer | 2018-02-14 02:42:12 | Re: Parameter status message not sent? |
Previous Message | Amit Langote | 2018-02-14 02:17:42 | Re: reorganizing partitioning code (was: Re: [HACKERS] path toward faster partition pruning) |