On Sat, Feb 14, 2015 at 10:18 PM, Peter Eisentraut <peter_e@gmx.net> wrote:
> When managing configuration changes through automatic systems like Chef
> or Puppet, there is a problem: How do you manage changes requiring a
> restart?
>
> Generally, you'd set it up so that when a configuration file is changed,
> the server is reloaded. But for settings that require a restart, well,
> I don't know. From discussions with others, it emerged that a way to
> ask the server whether a restart is necessary would be useful. Then you
> can either automate the restart, or have a monitoring system warn you
> about it, and possibly schedule a restart separately or undo the
> configuration file change.
>
> So here is a patch for that. It adds a column pending_restart to
> pg_settings that is true when the configuration file contains a changed
> setting that requires a restart. We already had the logic to detect
> such changes, for producing the log entry. I have also set it up so
> that if you change your mind and undo the setting and reload the server,
> the pending_restart flag is reset to false.
You don't really need the "else" here, and in parallel cases:
if (*conf->variable != newval) {
+ record->status |= GUC_PENDING_RESTART; ereport(elevel,
(errcode(ERRCODE_CANT_CHANGE_RUNTIME_PARAM), errmsg("parameter \"%s\"
cannotbe
changed without restarting the server", name))); return
0; }
+ else
+ record->status &= ~GUC_PENDING_RESTART; return -1;
The if-statement ends with "return 0" so there is no reason for the "else".
--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company