Re: Phantom segment upon promotion causing troubles.

Andres Freund <andres@anarazel.de>

From: Andres Freund <andres@anarazel.de>
To: pgsql-hackers@postgresql.org, Heikki Linnakangas <hlinnaka@iki.fi>, gregburek@heroku.com
Date: 2017-06-19T07:41:23Z
Lists: pgsql-hackers
Hi,

On 2017-06-19 00:30:26 -0700, Andres Freund wrote:
> There seems to be a larger question ehre though: Why does
> XLogFileReadAnyTLI() probe all timelines even if they weren't a parent
> at that period?  That seems like a bad idea, especially in more
> complicated scenarios where some precursor timeline might live for
> longer than it was a parent?  ISTM XLogFileReadAnyTLI() should check
> which timeline a segment ought to come from, based on the historY?

One thing that I blamed first, before debunking it, is that after
promotion we do:

	/*
	 * Preallocate additional log files, if wanted.
	 */
	PreallocXlogFiles(EndOfLog);

where EndOfLog points to the last replayed record, rather than last
record(s).  I think that's currently harmless, but it's certainly
fragile.  Given the uselessness of PreallocXlogFiles() calls, I'm
inclined to just remove it here...

- Andres


Commits

  1. Fix possibility of creating a "phantom" segment after promotion.