Thread: SIGHUP during recovery

SIGHUP during recovery

From
Fujii Masao
Date:
Hi,

Currently, the startup process ignores SIGHUP.

The attached patch allows the startup process to re-read config file:
when SIGHUP arrives, the startup process also receives the signal
from postmaster and reload the settings in main redo apply loop.
Obviously, this is useful to change the parameters which the startup
process may use (e.g. log_line_prefix, log_checkpoints).

Any comments welcome.

Regards,

--
Fujii Masao
NIPPON TELEGRAPH AND TELEPHONE CORPORATION
NTT Open Source Software Center

Attachment

Re: SIGHUP during recovery

From
Heikki Linnakangas
Date:
Fujii Masao wrote:
> Currently, the startup process ignores SIGHUP.
> 
> The attached patch allows the startup process to re-read config file:
> when SIGHUP arrives, the startup process also receives the signal
> from postmaster and reload the settings in main redo apply loop.
> Obviously, this is useful to change the parameters which the startup
> process may use (e.g. log_line_prefix, log_checkpoints).

Thanks, committed.

The fact that bgwriter can run simultaneously with the startup process 
makes this more important than before. Otherwise if you change something 
like log_line_prefix, bgwriter will use the new setting but startup 
process will not.

--   Heikki Linnakangas  EnterpriseDB   http://www.enterprisedb.com


Re: SIGHUP during recovery

From
Simon Riggs
Date:
On Wed, 2009-03-04 at 15:58 +0200, Heikki Linnakangas wrote:
> Fujii Masao wrote:
> > Currently, the startup process ignores SIGHUP.
> > 
> > The attached patch allows the startup process to re-read config file:
> > when SIGHUP arrives, the startup process also receives the signal
> > from postmaster and reload the settings in main redo apply loop.
> > Obviously, this is useful to change the parameters which the startup
> > process may use (e.g. log_line_prefix, log_checkpoints).
> 
> Thanks, committed.
> 
> The fact that bgwriter can run simultaneously with the startup process 
> makes this more important than before. Otherwise if you change something 
> like log_line_prefix, bgwriter will use the new setting but startup 
> process will not.

Should we reload recovery.conf also?

-- Simon Riggs           www.2ndQuadrant.comPostgreSQL Training, Services and Support



Re: SIGHUP during recovery

From
Fujii Masao
Date:
Hi,

On Thu, Mar 5, 2009 at 6:28 PM, Simon Riggs <simon@2ndquadrant.com> wrote:
> Should we reload recovery.conf also?

I think no for now. At least the parameters which specify the recovery target
should not be changed during recovery. On the other hand, restore_command
maybe can be set safely, but I'm not sure if it's really useful at this time.

Or, upcoming HS needs such capability?

BTW, I found that backup.sgml still had the description of log_restartpoints.
Here is the patch to remove it.

Regards,

--
Fujii Masao
NIPPON TELEGRAPH AND TELEPHONE CORPORATION
NTT Open Source Software Center

Attachment

Re: SIGHUP during recovery

From
Simon Riggs
Date:
On Thu, 2009-03-05 at 19:52 +0900, Fujii Masao wrote:
> Hi,
> 
> On Thu, Mar 5, 2009 at 6:28 PM, Simon Riggs <simon@2ndquadrant.com> wrote:
> > Should we reload recovery.conf also?
> 
> I think no for now. At least the parameters which specify the recovery target
> should not be changed during recovery. 

Why not?

> On the other hand, restore_command
> maybe can be set safely, but I'm not sure if it's really useful at this time.

Not sure changing those parameters would be a bad thing. Other
parameters can be changed, why not those?

-- Simon Riggs           www.2ndQuadrant.comPostgreSQL Training, Services and Support



Re: SIGHUP during recovery

From
Heikki Linnakangas
Date:
Simon Riggs wrote:
> On Thu, 2009-03-05 at 19:52 +0900, Fujii Masao wrote:
>> Hi,
>>
>> On Thu, Mar 5, 2009 at 6:28 PM, Simon Riggs <simon@2ndquadrant.com> wrote:
>>> Should we reload recovery.conf also?
>> I think no for now. At least the parameters which specify the recovery target
>> should not be changed during recovery. 
> 
> Why not?

I don't see either why it wouldn't work. As long as the new value is 
greater than the current point in recovery.

BTW, we now have some extra safeguards (minRecoveryPoint) in place to 
prevent you from corrupting your database by moving recovery target 
backwards to a point earlier than an already recovery xlog record. 
That's not really that relevant to reloading recovery.conf on the fly, 
but it's worth noting. The documentation currently says about the 
settings in recovery.conf that "They cannot be changed once recovery has 
begun." That wording should probably be relaxed.

>> On the other hand, restore_command
>> maybe can be set safely, but I'm not sure if it's really useful at this time.
> 
> Not sure changing those parameters would be a bad thing. Other
> parameters can be changed, why not those?

It seems safe to me. It doesn't seem very useful, though. The only 
options left in recovery.conf are restore_command, and all the 
target-related options. If you want to change those, you can always stop 
the server, change the settings and restart; without hot standby there 
isn't any other backends active yet that would get upset about the shutdown.

The main reason why reloading the main config file on SIGHUP is a good 
idea is that otherwise you get an inconsistency between the background 
writer and the startup process.

--   Heikki Linnakangas  EnterpriseDB   http://www.enterprisedb.com


Re: SIGHUP during recovery

From
Heikki Linnakangas
Date:
Fujii Masao wrote:
> BTW, I found that backup.sgml still had the description of log_restartpoints.
> Here is the patch to remove it.

Thanks, I had put that in the Open Items list so that we remember to do 
that before release.

--   Heikki Linnakangas  EnterpriseDB   http://www.enterprisedb.com


Re: SIGHUP during recovery

From
Tom Lane
Date:
Fujii Masao <masao.fujii@gmail.com> writes:
> BTW, I found that backup.sgml still had the description of log_restartpoints.
> Here is the patch to remove it.

Applied, thanks.
        regards, tom lane