Re: Re: Slave enters in recovery and promotes when WAL stream with master is cut + delay master/slave

Heikki Linnakangas <hlinnakangas@vmware.com>

From: Heikki Linnakangas <hlinnakangas@vmware.com>
To: Andres Freund <andres@2ndquadrant.com>
Cc: Michael Paquier <michael.paquier@gmail.com>, Alvaro Herrera <alvherre@2ndquadrant.com>, PostgreSQL mailing lists <pgsql-hackers@postgresql.org>
Date: 2013-01-17T16:33:42Z
Lists: pgsql-hackers
On 17.01.2013 17:42, Andres Freund wrote:
> Ok, the attached patch seems to fix a) and b). c) above is bogus, as
> explained in a comment in the patch.  I also noticed that the TLI check
> didn't mark the last source as failed.

This looks fragile:

> 			/*
> 			 * We only end up here without a message when XLogPageRead() failed
> 			 * - in that case we already logged something.
> 			 * In StandbyMode that only happens if we have been triggered, so
> 			 * we shouldn't loop anymore in that case.
> 			 */
> 			if (errormsg == NULL)
> 				break;

I don't like relying on the presence of an error message to control 
logic like that. Should we throw in an explicit CheckForStandbyTrigger() 
check in the condition of that loop?

- Heikki


Commits

  1. Use the right timeline when beginning to stream from master.

  2. Split out XLog reading as an independent facility